PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.27.0
GiveWP – Donation Plugin and Fundraising Platform v2.27.0
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 / License / PremiumAddonsListManager.php
give / src / License Last commit date
LicenseServiceProvider.php 4 years ago PremiumAddonsListManager.php 4 years ago
PremiumAddonsListManager.php
93 lines
1 <?php
2
3 namespace Give\License;
4
5 /**
6 * Class PremiumAddonManager
7 * @package Give\License
8 *
9 * this class we use to manager premium addons list for licensing.
10 *
11 * @since 2.9.2
12 */
13 class PremiumAddonsListManager
14 {
15 /**
16 * Products list api url.
17 *
18 * @since 2.9.2
19 */
20 const PRODUCTS_LIST_API_URL = 'https://givewp.com/edd-api/products';
21
22 /**
23 * Cached addon values for the same request, prevents subsequent transient queries
24 *
25 * @since 2.11.3
26 */
27 private $addonIds;
28
29 /**
30 * Get premium addons slugs as addons ids.
31 *
32 * @since 2.11.3 Always cache to avoid timeouts on givewp.com
33 * @since 2.9.2
34 *
35 * @return array
36 */
37 private function getAddonsIds()
38 {
39 if (isset($this->addonIds)) {
40 return $this->addonIds;
41 }
42
43 $optionName = 'give_premium_addons_ids';
44 $cachedResult = get_transient($optionName);
45 if ($cachedResult !== false) {
46 return $this->addonIds = $cachedResult;
47 }
48
49 $response = wp_remote_get(
50 self::PRODUCTS_LIST_API_URL . '?number=-1',
51 [
52 'timeout' => 3,
53 ]
54 );
55 $productsInformation = wp_remote_retrieve_body($response);
56 $responseCode = wp_remote_retrieve_response_code($response);
57 if ( ! $productsInformation || $responseCode < 200 || $responseCode > 299) {
58 set_transient($optionName, [], HOUR_IN_SECONDS);
59
60 return $this->addonIds = [];
61 }
62
63 $productsInformation = json_decode($productsInformation, true);
64 $productsIds = [];
65 foreach ($productsInformation['products'] as $product) {
66 $productsIds[] = $product['info']['slug'];
67 }
68
69 if ($productsIds) {
70 set_transient($optionName, $productsIds, DAY_IN_SECONDS);
71 }
72
73 return $this->addonIds = $productsIds;
74 }
75
76 /**
77 * Return whether or not addon is premium addon.
78 *
79 * @since 2.9.2
80 *
81 * @param string $pluginURI
82 *
83 * @return bool
84 */
85 public function isPremiumAddons($pluginURI)
86 {
87 $addonId = basename($pluginURI);
88 $addonsIds = $this->getAddonsIds();
89
90 return in_array($addonId, $addonsIds, true);
91 }
92 }
93