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 / Integrations / Divi / includes / modules / PrestoPlayer / PrestoPlayer.php
presto-player / inc / Integrations / Divi / includes / modules / PrestoPlayer Last commit date
PrestoPlayer.php 3 weeks ago
PrestoPlayer.php
119 lines
1 <?php
2 /**
3 * Presto Player Divi Builder module.
4 *
5 * @package PrestoPlayer
6 */
7
8 use PrestoPlayer\Services\Scripts;
9 use PrestoPlayer\Models\ReusableVideo;
10
11 if ( ! defined( 'ABSPATH' ) ) {
12 exit; // Exit if accessed directly.
13 }
14
15 /**
16 * Divi Builder module for rendering Presto Player media.
17 */
18 class DiviPrestoPlayer extends ET_Builder_Module {
19
20 /**
21 * The module slug.
22 *
23 * @var string
24 */
25 public $slug = 'prpl_presto_player';
26
27 /**
28 * Whether the Visual Builder is supported.
29 *
30 * @var string
31 */
32 public $vb_support = 'on';
33
34 /**
35 * The module credits.
36 *
37 * @var array
38 */
39 protected $module_credits = array(
40 'module_uri' => '',
41 'author' => '',
42 'author_uri' => '',
43 );
44
45 /**
46 * Initializes the module.
47 *
48 * @return void
49 */
50 public function init() {
51 $this->name = esc_html__( 'Presto Player Media', 'presto-player' );
52 // TODO: add icon support.
53 }
54
55 /**
56 * Returns the module fields configuration.
57 *
58 * @return array
59 */
60 public function get_fields() {
61 return array(
62 'video_id' => array(
63 'label' => esc_html__( 'Choose Media', 'presto-player' ),
64 'type' => 'prpl_video_selector',
65 'option_category' => 'basic_option',
66 'description' => esc_html__( 'Select from the media hub.', 'presto-player' ),
67 'toggle_slug' => 'image_video', // See https://www.elegantthemes.com/documentation/developers/divi-module/module-settings-groups/.
68 ),
69 'url_override' => array(
70 'label' => esc_html__( 'Dynamic URL Override', 'presto-player' ),
71 'type' => 'text',
72 'description' => esc_html__( 'Please choose media above before selecting dynamic URL override.', 'presto-player' ),
73 'dynamic_content' => 'text',
74 'option_category' => 'basic_option',
75 'toggle_slug' => 'image_video',
76 ),
77 );
78 }
79
80 /**
81 * Returns the advanced fields configuration.
82 *
83 * See https://www.elegantthemes.com/documentation/developers/divi-module/advanced-field-types-for-module-settings/.
84 *
85 * @return array
86 */
87 public function get_advanced_fields_config() {
88 return array(
89 'background' => false,
90 'link_options' => false,
91 );
92 }
93
94 /**
95 * Renders the module output.
96 *
97 * @param array $attrs The module attributes.
98 * @param string|null $content The module content.
99 * @param string|null $render_slug The render slug.
100 * @return string|null The rendered markup, or null when nothing renders.
101 */
102 public function render( $attrs, $content = null, $render_slug = null ) {
103 // Global is the most reliable between page builders.
104 global $load_presto_js;
105 $load_presto_js = true;
106 ( new Scripts() )->blockAssets(); // Enqueue block assets.
107
108 $video = new ReusableVideo( $this->props['video_id'] );
109 $overrides = array();
110 if ( $this->props['url_override'] ) {
111 $overrides['src'] = $this->props['url_override'];
112 }
113 $render = $video->renderBlock( $overrides );
114 return $render ? $render : null;
115 }
116 }
117
118 new DiviPrestoPlayer();
119