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 / Blocks / YouTubeBlock.php
presto-player / inc / Blocks Last commit date
AudioBlock.php 9 months ago MediaHubBlock.php 9 months ago PopupBlock.php 10 months ago PopupMediaBlock.php 7 months ago PopupTriggerBlock.php 10 months ago ReusableEditBlock.php 9 months ago ReusableVideoBlock.php 2 weeks ago SelfHostedBlock.php 9 months ago VimeoBlock.php 9 months ago YouTubeBlock.php 9 months ago
YouTubeBlock.php
109 lines
1 <?php
2 /**
3 * YouTube Block.
4 *
5 * @package PrestoPlayer\Blocks
6 */
7
8 namespace PrestoPlayer\Blocks;
9
10 use PrestoPlayer\Models\Preset;
11 use PrestoPlayer\Support\Block;
12
13 /**
14 * YouTube Block.
15 */
16 class YouTubeBlock extends Block {
17
18 /**
19 * Block name.
20 *
21 * @var string
22 */
23 protected $name = 'youtube';
24
25 /**
26 * Add url to template.
27 *
28 * @return array
29 */
30 public function additionalAttributes() {
31 return array(
32 'src' => array(
33 'type' => 'string',
34 ),
35 );
36 }
37
38 /**
39 * Make youtube URL from attributes.
40 *
41 * @param array $attributes Block attributes.
42 * @return string
43 */
44 public function makeUrl( $attributes ) {
45 $id = $this->getIdFromURL( ! empty( $attributes['src'] ) ? $attributes['src'] : '' );
46
47 if ( empty( $id ) ) {
48 return '';
49 }
50 // Build youtube url.
51 return add_query_arg(
52 array(
53 'iv_load_policy' => 3,
54 'modestbranding' => 1,
55 'playinline' => ! empty( $attributes['playsInline'] ) ? 1 : 0,
56 'showinfo' => 0,
57 'rel' => 0,
58 'enablejsapi' => 1,
59 ),
60 "//www.youtube.com/embed/{$id}"
61 );
62 }
63
64 /**
65 * Add src.
66 *
67 * @param array $attributes Block attributes.
68 * @param array $default_config Default config.
69 * @return array
70 */
71 public function sanitizeAttributes( $attributes, $default_config ) {
72 $preset = ! empty( $attributes['preset'] ) ? new Preset( $attributes['preset'] ) : null;
73 $id = $this->getIdFromURL( ! empty( $attributes['src'] ) ? $attributes['src'] : '' );
74
75 return array(
76 'video_id' => ! empty( $attributes['id'] ) ? $attributes['id'] : 0,
77 'provider_video_id' => $id,
78 'src' => $this->makeUrl( $attributes ),
79 'poster' => isset( $attributes['poster'] ) ? esc_url( $attributes['poster'] ) : false,
80 'hide_youtube' => ! empty( $preset ) ? ! empty( (bool) $preset->hide_youtube ) : false,
81 );
82 }
83
84 /**
85 * Gets the id from the Youtube URL.
86 *
87 * @param string $url URL.
88 * @return string
89 */
90 public function getIdFromURL( $url = '' ) {
91 preg_match( "/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user|shorts)\/))([^\?&\"'>]+)/", $url, $matches );
92 return ! empty( $matches[1] ) ? $matches[1] : '';
93 }
94
95 /**
96 * Register the block type.
97 *
98 * @return void
99 */
100 public function registerBlockType() {
101 register_block_type(
102 PRESTO_PLAYER_PLUGIN_DIR . 'src/admin/blocks/blocks/youtube',
103 array(
104 'render_callback' => array( $this, 'html' ),
105 )
106 );
107 }
108 }
109