API
2 years ago
Blocks
5 years ago
License
5 years ago
AdminNotice.php
5 years ago
AdminNotices.php
4 years ago
AjaxActions.php
2 years ago
Blocks.php
5 years ago
Compatibility.php
4 years ago
Menu.php
3 years ago
Migrations.php
5 years ago
Player.php
2 years ago
ProCompatibility.php
2 years ago
ReusableVideos.php
4 years ago
Scripts.php
2 years ago
Settings.php
4 years ago
Shortcodes.php
2 years ago
Streamer.php
4 years ago
Translation.php
2 years ago
VideoPostType.php
4 years ago
Player.php
75 lines
| 1 | <?php |
| 2 | |
| 3 | namespace PrestoPlayer\Services; |
| 4 | |
| 5 | use PrestoPlayer\Contracts\Service; |
| 6 | |
| 7 | class Player implements Service |
| 8 | { |
| 9 | public function register() |
| 10 | { |
| 11 | // ajax percentage actions |
| 12 | add_action('wp_ajax_presto_player_progress_percent', [$this, 'progressAjaxPercent']); |
| 13 | add_action('wp_ajax_nopriv_presto_player_progress_percent', [$this, 'progressAjaxPercent']); |
| 14 | |
| 15 | add_action('wp_ajax_nopriv_presto_refresh_progress_nonce', [$this, 'generateNonce']); |
| 16 | add_action('wp_ajax_presto_refresh_progress_nonce', [$this, 'generateNonce']); |
| 17 | } |
| 18 | |
| 19 | // refresh nonce |
| 20 | public function generateNonce() |
| 21 | { |
| 22 | return wp_send_json_success(wp_create_nonce('wp_rest')); |
| 23 | } |
| 24 | |
| 25 | /** |
| 26 | * Run ajax percent action |
| 27 | * |
| 28 | * @return void |
| 29 | */ |
| 30 | public function progressAjaxPercent() |
| 31 | { |
| 32 | $response = $this->progressAction(); |
| 33 | if (is_wp_error($response)) { |
| 34 | wp_send_json_error($response->get_error_message(), $response->get_all_error_data('status')); |
| 35 | } |
| 36 | |
| 37 | return wp_send_json_success(); |
| 38 | } |
| 39 | |
| 40 | /** |
| 41 | * Run the progress action |
| 42 | * |
| 43 | * @return bool|\WP_Error |
| 44 | */ |
| 45 | public function progressAction() |
| 46 | { |
| 47 | // verify nonce |
| 48 | if (!wp_verify_nonce($_POST['nonce'] ?? '', 'wp_rest')) { |
| 49 | return new \WP_Error('invalid', 'Nonce invalid', ['status' => 403]); |
| 50 | } |
| 51 | |
| 52 | // video id is required |
| 53 | if (empty($_POST['id'])) { |
| 54 | return new \WP_Error('invalid', 'You must provide a valid video id', ['status' => 400]); |
| 55 | } |
| 56 | |
| 57 | // must have a valid percentage |
| 58 | if (!isset($_POST['percent'])) { |
| 59 | return new \WP_Error('invalid', 'You must provide a valid percentage', ['status' => 400]); |
| 60 | } |
| 61 | |
| 62 | $id = (int) $_POST['id']; |
| 63 | $percent = (int) $_POST['percent']; |
| 64 | $visit_time = isset($_POST['visit_time']) ? (int) $_POST['visit_time'] : false; |
| 65 | |
| 66 | /** |
| 67 | * Progress event, sends video id and percent progress |
| 68 | */ |
| 69 | do_action('presto_player_progress', $id, $percent, $visit_time); |
| 70 | |
| 71 | // success |
| 72 | return true; |
| 73 | } |
| 74 | } |
| 75 |