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