PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.17.1
GiveWP – Donation Plugin and Fundraising Platform v3.17.1
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 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.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / LegacySubscriptions / ServiceProvider.php
give / src / LegacySubscriptions Last commit date
Actions 3 years ago includes 1 year ago ServiceProvider.php 3 years ago
ServiceProvider.php
109 lines
1 <?php
2
3 namespace Give\LegacySubscriptions;
4
5 use Closure;
6 use Give\Helpers\Hooks;
7 use Give\LegacySubscriptions\Actions\EnsureSubscriptionHasPaymentMode;
8 use Give\ServiceProviders\ServiceProvider as ServiceProviderInterface;
9
10 /**
11 * Class ServiceProvider - LegacySubscriptions
12 *
13 * This handles the loading of all the legacy codebase included in the LegacySubscriptions /includes directory.
14 * DO NOT EXTEND THIS WITH NEW CODE as it is intended to shrink over time as we migrate over
15 * to the new ways of doing things.
16 *
17 * @since 2.19.0
18 */
19 class ServiceProvider implements ServiceProviderInterface
20 {
21 /**
22 * @inheritDoc
23 */
24 public function register()
25 {
26 $recurringIsInstalled = defined('GIVE_RECURRING_VERSION') && GIVE_RECURRING_VERSION;
27 $recurringMeetsRequirements = $recurringIsInstalled && version_compare(GIVE_RECURRING_VERSION, '1.14.1', '>');
28
29 if ($recurringMeetsRequirements || !$recurringIsInstalled) {
30 $this->includeLegacyFiles();
31 $this->bindClasses();
32 }
33
34 $this->includeLegacyHelpers();
35 }
36
37 /**
38 * @inheritDoc
39 */
40 public function boot()
41 {
42 Hooks::addAction('give_subscription_post_create', EnsureSubscriptionHasPaymentMode::class, '__invoke', 10, 2);
43 }
44
45 /**
46 * Load all the legacy class files since they don't have autoloading
47 *
48 * @since 2.19.0
49 */
50 private function includeLegacyFiles()
51 {
52 require_once __DIR__ . '/includes/give-subscriptions-db.php';
53 require_once __DIR__ . '/includes/give-recurring-db-subscription-meta.php';
54 require_once __DIR__ . '/includes/give-recurring-cache.php';
55 require_once __DIR__ . '/includes/give-subscription.php';
56 require_once __DIR__ . '/includes/give-subscriptions-api.php';
57 require_once __DIR__ . '/includes/give-recurring-subscriber.php';
58 require_once __DIR__ . '/includes/give-recurring-cron.php';
59 }
60
61 /**
62 * Load all the legacy helpers
63 *
64 * @since 2.19.0
65 */
66 private function includeLegacyHelpers()
67 {
68 require_once __DIR__ . '/includes/give-recurring-helpers.php';
69 }
70
71 /**
72 * Binds the legacy classes to the service provider
73 *
74 * @since 2.19.0
75 */
76 private function bindClasses()
77 {
78 $this->bindInstance(
79 'subscription_meta',
80 'Give_Recurring_DB_Subscription_Meta',
81 'give-recurring-db-subscription-meta.php'
82 );
83 }
84
85 /**
86 * A helper for loading legacy classes that do not use autoloading, then binding their instance
87 * to the container.
88 *
89 * @since 2.19.0
90 *
91 * @param string $alias
92 * @param string|Closure $class
93 * @param string $includesPath
94 * @param bool $singleton
95 */
96 private function bindInstance($alias, $class, $includesPath, $singleton = false)
97 {
98 require_once __DIR__ . "/includes/$includesPath";
99
100 if ($class instanceof Closure) {
101 give()->instance($alias, $class());
102 } elseif ($singleton) {
103 give()->instance($alias, $class::get_instance());
104 } else {
105 give()->instance($alias, new $class());
106 }
107 }
108 }
109