PluginProbe ʕ •ᴥ•ʔ
Presto Player / trunk
Presto Player vtrunk
4.4.1 4.4.0 4.3.3 4.3.2 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 11 months ago MediaHubBlock.php 11 months ago PopupBlock.php 11 months ago PopupMediaBlock.php 8 months ago PopupTriggerBlock.php 3 weeks ago ReusableEditBlock.php 11 months ago ReusableVideoBlock.php 2 months ago SelfHostedBlock.php 11 months ago VimeoBlock.php 11 months ago YouTubeBlock.php 1 week 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 = self::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 static 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