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 / Services / NpsSurvey.php
presto-player / inc / Services Last commit date
API 1 month ago Blocks 10 months ago License 1 month ago AdminNotice.php 3 weeks ago AdminNotices.php 3 weeks ago AjaxActions.php 3 weeks ago Blocks.php 1 year ago Compatibility.php 10 months ago Learn.php 1 month ago Menu.php 1 month ago Migrations.php 1 year ago NpsSurvey.php 5 months ago Onboarding.php 3 weeks ago Player.php 3 days ago PluginInstaller.php 1 month ago PreloadService.php 1 year ago ProCompatibility.php 1 month ago ReusableVideos.php 2 weeks ago RewriteRulesManager.php 1 year ago Scripts.php 2 weeks ago Settings.php 1 month ago Shortcodes.php 1 month ago Streamer.php 3 weeks ago Translation.php 3 weeks ago Usage.php 3 weeks ago VideoPostType.php 2 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