PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.2
Presto Player v4.3.2
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 / Services / NpsSurvey.php
presto-player / inc / Services Last commit date
API 1 month ago Blocks 10 months ago License 1 day ago AdminNotice.php 1 month ago AdminNotices.php 1 month ago AjaxActions.php 1 month ago Blocks.php 2 years ago Compatibility.php 10 months ago Learn.php 2 months ago Menu.php 2 months ago Migrations.php 2 years ago NpsSurvey.php 5 months ago Onboarding.php 1 month ago Player.php 1 week ago PluginInstaller.php 2 months ago PreloadService.php 1 year ago ProCompatibility.php 2 months ago ReusableVideos.php 3 weeks ago RewriteRulesManager.php 2 years ago Scripts.php 3 weeks ago Settings.php 2 months ago Shortcodes.php 1 month ago Streamer.php 1 month ago Translation.php 1 month ago Usage.php 1 month ago VideoPostType.php 3 weeks ago
NpsSurvey.php
80 lines
1 <?php
2 /**
3 * NPS Survey Service.
4 *
5 * Responsible for loading the latest version of the NPS Survey library.
6 * This ensures version arbitration works correctly when multiple plugins
7 * ship the same library.
8 *
9 * @package PrestoPlayer\Services
10 */
11
12 namespace PrestoPlayer\Services;
13
14 use PrestoPlayer\Contracts\Service;
15
16 /**
17 * NPS Survey Service.
18 */
19 class NpsSurvey implements Service {
20
21 /**
22 * Register the service.
23 *
24 * @return void
25 */
26 public function register() {
27 $this->versionCheck();
28 add_action( 'init', array( $this, 'load' ), 999 );
29 }
30
31 /**
32 * Version Check
33 *
34 * Compares the bundled NPS survey version against a global variable
35 * to ensure only the highest version is loaded (shared library pattern).
36 *
37 * @return void
38 */
39 public function versionCheck(): void {
40 $file = realpath( PRESTO_PLAYER_PLUGIN_DIR . 'inc/lib/nps-survey/version.json' );
41
42 // Validate file exists and is readable before accessing.
43 if ( $file && is_file( $file ) && is_readable( $file ) ) {
44 // @codingStandardsIgnoreStart - file_get_contents is safe here: path is constructed from PRESTO_PLAYER_PLUGIN_DIR constant and hardcoded string, validated with realpath(), is_file(), and is_readable().
45 $file_data = json_decode( file_get_contents( $file ), true );
46 // @codingStandardsIgnoreEnd
47
48 // Note: Global variables are used for version management across the NPS survey library.
49 // This is intentional design to allow multiple plugins to share the same library instance.
50 global $nps_survey_version, $nps_survey_init;
51
52 $path = realpath( PRESTO_PLAYER_PLUGIN_DIR . 'inc/lib/nps-survey/nps-survey.php' );
53 $version = $file_data['nps-survey'] ?? 0;
54
55 if ( null === $nps_survey_version ) {
56 $nps_survey_version = '1.0.0';
57 }
58
59 // Compare versions - only register if our version is higher or equal.
60 if ( version_compare( $version, $nps_survey_version, '>=' ) ) {
61 $nps_survey_version = $version;
62 $nps_survey_init = $path;
63 }
64 }
65 }
66
67 /**
68 * Load the latest version of the NPS survey library.
69 *
70 * @return void
71 */
72 public function load(): void {
73 global $nps_survey_init;
74
75 if ( ! empty( $nps_survey_init ) && is_file( realpath( $nps_survey_init ) ) ) {
76 include_once realpath( $nps_survey_init );
77 }
78 }
79 }
80