PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.2
GiveWP – Donation Plugin and Fundraising Platform v4.16.2
4.16.3 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 / VendorOverrides / Harbor / Actions / ReportLegacyLicences.php
give / src / VendorOverrides / Harbor / Actions Last commit date
HasActivePremiumAddons.php 1 month ago ReportLegacyLicences.php 2 months ago
ReportLegacyLicences.php
106 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace Give\VendorOverrides\Harbor\Actions;
6
7 use Give\License\Repositories\LicenseRepository;
8
9 /**
10 * Reports legacy Give licenses to Harbor by expanding each license's downloads
11 * into individual entries, so each plugin slug (e.g. "give-recurring") is
12 * associated with the correct license key.
13 *
14 * Hooked into the `stellarwp/harbor/legacy_licenses` filter.
15 *
16 * @since 4.15.0
17 */
18 class ReportLegacyLicences
19 {
20 /**
21 * @since 4.15.0
22 */
23 private LicenseRepository $licenseRepository;
24
25 /**
26 * @since 4.15.0
27 */
28 public function __construct(LicenseRepository $licenseRepository)
29 {
30 $this->licenseRepository = $licenseRepository;
31 }
32
33 /**
34 * @since 4.15.0
35 * @param array $licenses Existing licenses already added by other plugins.
36 * @return array
37 */
38 public function __invoke(array $licenses): array
39 {
40 $storedLicenses = $this->licenseRepository->getLicenses();
41 $pageUrl = admin_url('edit.php?post_type=give_forms&page=give-settings&tab=licenses');
42 $legacyLicenses = [];
43 $coveredSlugs = [];
44
45 foreach ($storedLicenses as $license) {
46 foreach ($license->downloads as $download) {
47 if (empty($download->pluginSlug)) {
48 continue;
49 }
50
51 $coveredSlugs[] = $download->pluginSlug;
52
53 $entry = [
54 'key' => $license->licenseKey,
55 'slug' => $download->pluginSlug,
56 'name' => $download->name,
57 'product' => 'give',
58 'is_active' => $license->isActive,
59 'page_url' => $pageUrl,
60 ];
61
62 if (!empty($license->expires)) {
63 $entry['expires_at'] = $license->expires;
64 }
65
66 $legacyLicenses[] = $entry;
67 }
68 }
69
70 foreach ($this->getUnlicensedPremiumAddons($coveredSlugs, $pageUrl) as $entry) {
71 $legacyLicenses[] = $entry;
72 }
73
74 return array_merge($licenses, $legacyLicenses);
75 }
76
77 /**
78 * Returns entries for premium add-ons that are installed but have no license key in the database.
79 *
80 * @since 4.15.0
81 */
82 private function getUnlicensedPremiumAddons(array $coveredSlugs, string $pageUrl): array
83 {
84 $entries = [];
85
86 foreach (give_get_plugins(['only_premium_add_ons' => true]) as $plugin) {
87 $slug = $plugin['Dir'];
88
89 if (in_array($slug, $coveredSlugs, true)) {
90 continue;
91 }
92
93 $entries[] = [
94 'key' => '',
95 'slug' => $slug,
96 'name' => $plugin['Name'],
97 'product' => 'give',
98 'is_active' => false,
99 'page_url' => $pageUrl,
100 ];
101 }
102
103 return $entries;
104 }
105 }
106