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 / Models / Player.php
presto-player / inc / Models Last commit date
AudioPreset.php 1 month ago Block.php 10 months ago CurrentUser.php 1 year ago EmailCollection.php 1 year ago Model.php 3 weeks ago ModelInterface.php 1 year ago Player.php 3 weeks ago Post.php 1 year ago Preset.php 1 month ago ReusableVideo.php 1 month ago Setting.php 1 year ago Video.php 1 month ago Webhook.php 1 year ago
Player.php
104 lines
1 <?php
2 /**
3 * Player model.
4 *
5 * @package PrestoPlayer
6 */
7
8 namespace PrestoPlayer\Models;
9
10 /**
11 * Player model.
12 */
13 class Player {
14
15 /**
16 * Option key used to store branding settings.
17 *
18 * @var string
19 */
20 public static $branding_key = 'presto_player_branding';
21
22 /**
23 * Determine whether a post contains a Presto Player instance.
24 *
25 * @param int $id Post ID to inspect.
26 * @return bool True if the post contains a player, false otherwise.
27 */
28 public static function postHasPlayer( $id ) {
29 // Global is the most reliable between page builders.
30 global $load_presto_js;
31 if ( $load_presto_js ) {
32 return true;
33 }
34
35 // Change to see if we have one of our blocks.
36 $types = Block::getBlockTypes();
37 foreach ( $types as $type ) {
38 if ( has_block( $type, $id ) ) {
39 return true;
40 }
41 }
42
43 // Check for data-presto-config (player rendered).
44 $wp_post = get_post( $id );
45 if ( $wp_post instanceof \WP_Post ) {
46 $post = $wp_post->post_content;
47 }
48 $has_player = false !== strpos( $post, '<presto-player' );
49 if ( $has_player ) {
50 return true;
51 }
52
53 // Check that we have a shortcode.
54 if ( has_shortcode( $post, 'presto_player' ) ) {
55 return true;
56 }
57
58 // Read-only request-context detection for page builders; no state change, so nonce verification does not apply.
59 // phpcs:disable WordPress.Security.NonceVerification.Recommended
60 // Enable on Elementor.
61 if ( ! empty( $_GET['action'] ) && 'elementor' === $_GET['action'] ) {
62 return true;
63 }
64 if ( isset( $_GET['elementor-preview'] ) ) {
65 return true;
66 }
67
68 // Load for beaver builder.
69 if ( isset( $_GET['fl_builder'] ) ) {
70 return true;
71 }
72 // phpcs:enable WordPress.Security.NonceVerification.Recommended
73
74 // Do we have the player.
75 return $has_player;
76 }
77
78 /**
79 * Get get branding settings
80 *
81 * @return array
82 */
83 public static function getBranding() {
84 $defaults = array(
85 'logo' => '',
86 'logo_width' => 150,
87 'color' => '#00b3ff',
88 );
89 return self::get_option( self::$branding_key, $defaults );
90 }
91
92 /**
93 * Revert to option default in case it's empty
94 *
95 * @param string $key Option key to retrieve.
96 * @param array $defaults Default value used when the stored option is empty.
97 * @return array The stored option value, or the defaults when empty.
98 */
99 public static function get_option( $key, $defaults ) {
100 $config = get_option( $key, $defaults );
101 return ! empty( $config ) ? $config : $defaults;
102 }
103 }
104