PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.1
Presto Player v4.3.1
4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / inc / Services / Player.php
presto-player / inc / Services Last commit date
API 1 month ago Blocks 10 months ago License 1 month ago AdminNotice.php 3 weeks ago AdminNotices.php 3 weeks ago AjaxActions.php 3 weeks ago Blocks.php 1 year ago Compatibility.php 10 months ago Learn.php 1 month ago Menu.php 1 month ago Migrations.php 1 year ago NpsSurvey.php 5 months ago Onboarding.php 3 weeks ago Player.php 4 days ago PluginInstaller.php 1 month ago PreloadService.php 1 year ago ProCompatibility.php 1 month ago ReusableVideos.php 2 weeks ago RewriteRulesManager.php 1 year ago Scripts.php 2 weeks ago Settings.php 1 month ago Shortcodes.php 1 month ago Streamer.php 3 weeks ago Translation.php 3 weeks ago Usage.php 3 weeks ago VideoPostType.php 2 weeks ago
Player.php
92 lines
1 <?php
2 /**
3 * Player progress AJAX service.
4 *
5 * @package PrestoPlayer
6 */
7
8 namespace PrestoPlayer\Services;
9
10 use PrestoPlayer\Contracts\Service;
11
12 /**
13 * Registers the AJAX endpoints used to track player progress.
14 */
15 class Player implements Service {
16
17 /**
18 * Register the AJAX hooks for this service.
19 *
20 * @return void
21 */
22 public function register() {
23 // Ajax percentage actions.
24 add_action( 'wp_ajax_presto_player_progress_percent', array( $this, 'progressAjaxPercent' ) );
25 add_action( 'wp_ajax_nopriv_presto_player_progress_percent', array( $this, 'progressAjaxPercent' ) );
26
27 add_action( 'wp_ajax_nopriv_presto_refresh_progress_nonce', array( $this, 'generateNonce' ) );
28 add_action( 'wp_ajax_presto_refresh_progress_nonce', array( $this, 'generateNonce' ) );
29 }
30
31 /**
32 * Send a freshly generated progress nonce as a JSON response.
33 *
34 * Scoped to progress tracking only — this endpoint is open to logged-out
35 * users, so it must not hand out a general-purpose wp_rest nonce.
36 *
37 * @return void
38 */
39 public function generateNonce() {
40 wp_send_json_success( wp_create_nonce( 'presto_player_progress' ) );
41 }
42
43 /**
44 * Run ajax percent action.
45 *
46 * @return void
47 */
48 public function progressAjaxPercent() {
49 $response = $this->progressAction();
50 if ( is_wp_error( $response ) ) {
51 wp_send_json_error( $response->get_error_message(), $response->get_all_error_data( 'status' ) );
52 }
53
54 wp_send_json_success();
55 }
56
57 /**
58 * Run the progress action.
59 *
60 * @return bool|\WP_Error True on success, or a WP_Error describing the failure.
61 */
62 public function progressAction() {
63 // Verify nonce. wp_rest is still accepted for pages rendered before the scoped nonce shipped.
64 $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['nonce'] ) ) : '';
65 if ( ! wp_verify_nonce( $nonce, 'presto_player_progress' ) && ! wp_verify_nonce( $nonce, 'wp_rest' ) ) {
66 return new \WP_Error( 'invalid', 'Nonce invalid', array( 'status' => 403 ) );
67 }
68
69 // Video id is required.
70 if ( empty( $_POST['id'] ) ) {
71 return new \WP_Error( 'invalid', 'You must provide a valid video id', array( 'status' => 400 ) );
72 }
73
74 // Must have a valid percentage.
75 if ( ! isset( $_POST['percent'] ) ) {
76 return new \WP_Error( 'invalid', 'You must provide a valid percentage', array( 'status' => 400 ) );
77 }
78
79 $id = (int) $_POST['id'];
80 $percent = (int) $_POST['percent'];
81 $visit_time = isset( $_POST['visit_time'] ) ? (int) $_POST['visit_time'] : false;
82
83 /**
84 * Progress event, sends video id and percent progress.
85 */
86 do_action( 'presto_player_progress', $id, $percent, $visit_time );
87
88 // Success.
89 return true;
90 }
91 }
92