File "Player.php"
Full Path: /home/tekvhqgl/public_html/dev2024_old_skip/wp-content/plugins/presto-player/inc/Services/Player.php
File size: 2.08 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace PrestoPlayer\Services;
use PrestoPlayer\Contracts\Service;
class Player implements Service
{
public function register()
{
// ajax percentage actions
add_action('wp_ajax_presto_player_progress_percent', [$this, 'progressAjaxPercent']);
add_action('wp_ajax_nopriv_presto_player_progress_percent', [$this, 'progressAjaxPercent']);
add_action('wp_ajax_nopriv_presto_refresh_progress_nonce', [$this, 'generateNonce']);
add_action('wp_ajax_presto_refresh_progress_nonce', [$this, 'generateNonce']);
}
// refresh nonce
public function generateNonce()
{
return wp_send_json_success(wp_create_nonce('wp_rest'));
}
/**
* Run ajax percent action
*
* @return void
*/
public function progressAjaxPercent()
{
$response = $this->progressAction();
if (is_wp_error($response)) {
wp_send_json_error($response->get_error_message(), $response->get_all_error_data('status'));
}
return wp_send_json_success();
}
/**
* Run the progress action
*
* @return bool|\WP_Error
*/
public function progressAction()
{
// verify nonce
if (!wp_verify_nonce($_POST['nonce'] ?? '', 'wp_rest')) {
return new \WP_Error('invalid', 'Nonce invalid', ['status' => 403]);
}
// video id is required
if (empty($_POST['id'])) {
return new \WP_Error('invalid', 'You must provide a valid video id', ['status' => 400]);
}
// must have a valid percentage
if (!isset($_POST['percent'])) {
return new \WP_Error('invalid', 'You must provide a valid percentage', ['status' => 400]);
}
$id = (int) $_POST['id'];
$percent = (int) $_POST['percent'];
$visit_time = isset($_POST['visit_time']) ? (int) $_POST['visit_time'] : false;
/**
* Progress event, sends video id and percent progress
*/
do_action('presto_player_progress', $id, $percent, $visit_time);
// success
return true;
}
}