PluginProbe ʕ •ᴥ•ʔ
Presto Player / 2.0.7
Presto Player v2.0.7
4.5.0 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 / Models / Post.php
presto-player / inc / Models Last commit date
AudioPreset.php 4 years ago Block.php 2 years ago CurrentUser.php 5 years ago EmailCollection.php 5 years ago LicensedProduct.php 5 years ago Model.php 4 years ago ModelInterface.php 5 years ago Player.php 5 years ago Post.php 5 years ago Preset.php 3 years ago ReusableVideo.php 3 years ago Setting.php 5 years ago Video.php 5 years ago Webhook.php 3 years ago
Post.php
105 lines
1 <?php
2
3 namespace PrestoPlayer\Models;
4
5 class Post
6 {
7 protected $post;
8
9 public function __construct(\WP_Post $post)
10 {
11 $this->post = $post;
12 }
13
14 /**
15 * Find video id in post using multiple methods
16 *
17 * @return int|false
18 */
19 public function findVideoId()
20 {
21 // first check for id in block
22 $id = $this->getVideoIdFromBlock();
23 if ($id) {
24 return (int) $id;
25 }
26
27 $id = $this->getVideoIdFromShortcode();
28 if ($id) {
29 return (int) $id;
30 }
31
32 $id = $this->getVideoIdFromContent();
33 if ($id) {
34 return (int) $id;
35 }
36
37 return false;
38 }
39
40 /**
41 * Find the video id from the shortcode
42 *
43 * @return int|false
44 */
45 public function getVideoIdFromShortcode()
46 {
47 $pattern = get_shortcode_regex();
48 $content = $this->post->post_content;
49 preg_match_all("/$pattern/", $content, $matches);
50
51 $shortcode = array_keys($matches[2], 'presto_player');
52 if (!$shortcode) {
53 return false;
54 }
55 if (empty($matches[3][0])) {
56 return false;
57 }
58
59 // get media hub id
60 $atts = shortcode_parse_atts($matches[3][0]);
61 if (!empty($atts['id'])) {
62 $this->post = get_post($atts['id']);
63 return $this->findVideoId();
64 }
65 }
66
67 /**
68 * Get the video id from the block
69 */
70 public function getVideoIdFromBlock()
71 {
72 $blocks = parse_blocks($this->post->post_content);
73
74 foreach ($blocks as $block) {
75 // inside wrapper block
76 if ('presto-player/reusable-edit' === $block['blockName'] && !empty($block['innerBlocks'])) {
77 $block = $block['innerBlocks'][0];
78 }
79
80 // find the id attribute in the block
81 if (in_array($block['blockName'], Block::getBlockTypes())) {
82 if (!empty($block['attrs']['id'])) {
83 return $block['attrs']['id'];
84 }
85 }
86 }
87
88 return false;
89 }
90
91 /**
92 * Fallback - get video id from comment in content
93 */
94 public function getVideoIdFromContent()
95 {
96 $content = $this->post->post_content;
97
98 preg_match_all("/(?<=<!--presto-player:video_id=)(.*)(?=-->)/", $content, $matches);
99 if (!empty($matches[0][0])) {
100 return (int) $matches[0][0];
101 }
102
103 return false;
104 }
105 }