PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.5.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.5.0
4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 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.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Integrations / NpsSurvey / NpsSurveyServiceProvider.php
surecart / app / src / Integrations / NpsSurvey Last commit date
NpsSurveyNotice.php 2 weeks ago NpsSurveyServiceProvider.php 3 months ago
NpsSurveyServiceProvider.php
106 lines
1 <?php
2
3 namespace SureCart\Integrations\NpsSurvey;
4
5 use SureCartCore\ServiceProviders\ServiceProviderInterface;
6
7 /**
8 * Provides the NPS Survey service provider.
9 */
10 class NpsSurveyServiceProvider implements ServiceProviderInterface {
11 /**
12 * Whether the NPS survey version check has already been performed.
13 *
14 * @var bool
15 */
16 private static bool $version_checked = false;
17
18 /**
19 * Register all dependencies in the IoC container.
20 *
21 * @param \Pimple\Container $container Service container.
22 * @return void
23 */
24 public function register( $container ) {
25 $container['surecart.nps.survey.notice'] = function () {
26 return new NpsSurveyNotice();
27 };
28 }
29
30 /**
31 * {@inheritDoc}
32 *
33 * @param \Pimple\Container $container Service Container.
34 */
35 public function bootstrap( $container ) {
36 if ( ! $container['surecart.account']->is_connected ) {
37 return;
38 }
39
40 $this->versionCheck();
41
42 if ( did_action( 'init' ) ) {
43 $this->loadNpsSurveyLibrary();
44 } else {
45 add_action( 'init', [ $this, 'loadNpsSurveyLibrary' ], 999 );
46 }
47
48 // Load the NPS survey notice on all admin pages, but it will only display on SureCart admin pages.
49 \SureCart::resolve( 'surecart.nps.survey.notice' )->bootstrap();
50 }
51
52 /**
53 * Register SureCart's NPS survey version in the global version auction.
54 *
55 * @return void
56 */
57 private function versionCheck(): void {
58 if ( self::$version_checked ) {
59 return;
60 }
61
62 $nps_lib_path = SURECART_VENDOR_DIR . '/brainstormforce/nps-survey';
63
64 $file = realpath( $nps_lib_path . '/version.json' );
65 if ( ! $file || ! is_file( $file ) ) {
66 return;
67 }
68
69 $contents = file_get_contents( $file );
70 if ( false === $contents ) {
71 return;
72 }
73
74 $file_data = json_decode( $contents, true );
75
76 global $nps_survey_version, $nps_survey_init;
77
78 $path = realpath( $nps_lib_path . '/nps-survey.php' );
79 $version = $file_data['nps-survey'] ?? 0;
80
81 if ( null === $nps_survey_version ) {
82 $nps_survey_version = '0.0.0';
83 }
84
85 if ( version_compare( $version, $nps_survey_version, '>=' ) ) {
86 $nps_survey_version = $version;
87 $nps_survey_init = $path;
88 }
89
90 self::$version_checked = true;
91 }
92
93 /**
94 * Load the winning NPS survey library file.
95 *
96 * @return void
97 */
98 public function loadNpsSurveyLibrary(): void {
99 global $nps_survey_init;
100
101 if ( $nps_survey_init && is_file( $nps_survey_init ) ) {
102 include_once $nps_survey_init;
103 }
104 }
105 }
106