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