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 / Database / Upgrades / BunnyWebhookUpgrade.php
presto-player / inc / Database / Upgrades Last commit date
BunnyWebhookUpgrade.php 4 months ago OnboardingBackfillUpgrade.php 1 month ago PerformanceUpgrade.php 1 year ago TransientsUpgrade.php 3 weeks ago Upgrades.php 1 month ago VisitsUpgrade.php 1 year ago
BunnyWebhookUpgrade.php
103 lines
1 <?php
2 /**
3 * Registers Bunny.net webhook URL for existing users on plugin update.
4 *
5 * @package PrestoPlayer\Database\Upgrades
6 */
7
8 namespace PrestoPlayer\Database\Upgrades;
9
10 use PrestoPlayer\Models\Setting;
11 use PrestoPlayer\Pro\Controllers\BunnyVideoLibraryController;
12
13 /**
14 * Registers Bunny.net webhook URL for existing users on plugin update.
15 */
16 class BunnyWebhookUpgrade {
17
18 /**
19 * Option name for tracking upgrade version.
20 *
21 * @var string
22 */
23 protected $name = 'presto_player_bunny_webhook_version';
24
25 /**
26 * Current upgrade version.
27 *
28 * @var int
29 */
30 protected $version = 1;
31
32 /**
33 * Run the upgrade.
34 *
35 * @return void
36 */
37 public function run() {
38 // Only run if Bunny is connected.
39 if ( ! $this->isBunnyConnected() ) {
40 return;
41 }
42
43 $current_version = get_option( $this->name, 0 );
44
45 // Already done for this version.
46 if ( $this->version <= $current_version ) {
47 return;
48 }
49
50 $ran = $this->registerWebhooks();
51
52 // Only mark complete when we actually ran. If skipped (Pro outdated), leave
53 // version unset so it re-runs when Pro is updated.
54 if ( $ran ) {
55 update_option( $this->name, $this->version );
56 }
57 }
58
59 /**
60 * Check if Bunny is connected (has library IDs stored).
61 *
62 * @return bool
63 */
64 protected function isBunnyConnected() {
65 return ! empty( Setting::get( 'bunny_stream_public', 'video_library_id' ) )
66 || ! empty( Setting::get( 'bunny_stream_private', 'video_library_id' ) );
67 }
68
69 /**
70 * Register webhooks for public and private libraries.
71 *
72 * Uses the service method to validate and register webhook URLs.
73 * Upgrade process continues silently on errors to avoid breaking the update.
74 * Skips if Pro plugin is outdated and does not have the webhooks() method.
75 *
76 * @return bool True if webhook registration was attempted, false if skipped (Pro outdated).
77 */
78 protected function registerWebhooks() {
79 // Require Pro plugin to have webhooks() method (added with transcription feature).
80 // Skip gracefully if Core was updated before Pro to avoid fatal error.
81 if ( ! class_exists( BunnyVideoLibraryController::class ) ) {
82 return false;
83 }
84
85 $library_controller = new BunnyVideoLibraryController();
86
87 // Check if the webhooks method exists.
88 if ( ! method_exists( $library_controller, 'webhooks' ) ) {
89 return false;
90 }
91
92 // Register webhook for public library if it exists.
93 $public_service = $library_controller->webhooks( 'public' );
94 $public_result = $public_service->registerWebhookUrl();
95
96 // Register webhook for private library if it exists.
97 $private_service = $library_controller->webhooks( 'private' );
98 $private_result = $private_service->registerWebhookUrl();
99
100 return true;
101 }
102 }
103