PluginProbe ʕ •ᴥ•ʔ
Reviews Feed – Add Testimonials and Customer Reviews From Google Reviews, Yelp, TripAdvisor, and More / 2.10.0
Reviews Feed – Add Testimonials and Customer Reviews From Google Reviews, Yelp, TripAdvisor, and More v2.10.0
2.11.0 2.10.0 2.9.0 2.8.0 2.7.0 2.6.7 2.6.8 2.6.5 2.6.4 2.6.3 2.6.2 2.6.0 2.5.5 2.5.4 2.5.3 2.5.2 trunk 1.0 1.0.1 1.0.2 1.0.3 1.1 1.1.1 1.1.2 1.2.0 2.0 2.1.0 2.1.1 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.5.0 2.5.1
reviews-feed / class / Common / AuthorizationStatusCheck.php
reviews-feed / class / Common Last commit date
Admin 3 weeks ago Builder 3 weeks ago Customizer 3 weeks ago Exceptions 3 weeks ago Helpers 3 weeks ago Integrations 3 weeks ago Migrations 3 weeks ago ReviewAlerts 3 weeks ago Services 3 weeks ago Settings 3 weeks ago Support 3 weeks ago Traits 3 weeks ago Utils 3 weeks ago AuthorizationStatusCheck.php 3 weeks ago BusinessDataCache.php 3 weeks ago Clear_Cache.php 3 weeks ago Container.php 3 weeks ago DisplayElements.php 3 weeks ago Email_Notification.php 3 weeks ago Error_Reporter.php 3 weeks ago Feed.php 3 weeks ago FeedCache.php 3 weeks ago FeedCacheUpdater.php 3 weeks ago FeedDisplay.php 3 weeks ago Feed_Locator.php 3 weeks ago Parser.php 3 weeks ago PostAggregator.php 3 weeks ago RemoteRequest.php 3 weeks ago SBR_Education.php 3 weeks ago SBR_Schema_Service.php 3 weeks ago SBR_Settings.php 3 weeks ago ServiceContainer.php 3 weeks ago SinglePostCache.php 3 weeks ago TemplateRenderer.php 3 weeks ago Tooltip_Wizard.php 3 weeks ago Util.php 3 weeks ago
AuthorizationStatusCheck.php
183 lines
1 <?php
2
3 /**
4 * Class AuthorizationStatusCheck
5 *
6 * @since 1.0
7 */
8
9 namespace SmashBalloon\Reviews\Common;
10
11 class AuthorizationStatusCheck {
12 /**
13 * @var array
14 */
15 private $statuses;
16
17 public function __construct()
18 {
19 $this->statuses = get_option('sbr_statuses', array());
20 }
21
22 /**
23 * An associative array with statuses of various authorization related things
24 *
25 * @return array
26 */
27 public function get_statuses()
28 {
29 $return = array(
30 'license_info' => isset($this->statuses['license_info']) ? $this->statuses['license_info'] : [],
31 'license_tier' => $this->get_license_tier(),
32 'provider_source_limit_reached' => $this->get_provider_source_limit_reached(),
33 'tier_allowed_providers' => $this->get_tier_allowed_providers(),
34 'update_frequency' => $this->get_update_frequency(),
35 'last_cron_update' => ! empty($this->statuses['last_cron_update']) ? $this->statuses['last_cron_update'] : 0,
36 'tiers_info' => $this->get_tiers_info(),
37 'woocommerce_active' => $this->is_woocommerce_active(),
38 );
39
40 return $return;
41 }
42
43 /**
44 * Check if WooCommerce plugin is active
45 *
46 * @return bool
47 */
48 public function is_woocommerce_active()
49 {
50 return class_exists('WooCommerce') || function_exists('WC');
51 }
52
53
54 /**
55 * The current license tier, 0 for a free tier
56 *
57 * @return int
58 */
59 public function get_license_tier()
60 {
61 $tier = isset($this->statuses['license_tier']) ? $this->statuses['license_tier'] : 0;
62 if (isset($this->statuses['license_info']) && isset($this->statuses['license_info']['item_name']) && $this->statuses['license_info']['item_name'] === 'All Access Bundle - All Plugins Unlimited') {
63 $tier = 3;
64 }
65 return intval($tier);
66 }
67
68 /**
69 * Returns a list of providers that have had the maximum number of non API key supported
70 * sources connected and also do not have an API key saved in settings
71 *
72 * @return array
73 */
74 public function get_provider_source_limit_reached()
75 {
76 if (! empty($this->statuses['provider_limit_reached']) && is_array($this->statuses['provider_limit_reached'])) {
77 $providers_with_keys = $this->get_providers_with_api_keys();
78 $return = array();
79 foreach ($this->statuses['provider_limit_reached'] as $provider_limit_reached) {
80 if (! in_array($provider_limit_reached, $providers_with_keys)) {
81 $return[] = $provider_limit_reached;
82 }
83 }
84 return $return;
85 }
86
87 return array();
88 }
89
90 /**
91 * Get Tiers Info
92 *
93 * @return []
94 */
95 public function get_tiers_info()
96 {
97 return [
98 'google' => 1,
99 'yelp' => 1,
100 'facebook' => 2,
101 'trustpilot' => 2,
102 'woocommerce' => 2,
103 'edd' => 2,
104 // SMASH-782 tier split: AliExpress = Plus (e-commerce), Airbnb +
105 // Booking = Elite (travel). Mirrors relay LicenseTiers::getAllowedProviders().
106 'aliexpress' => 2,
107 'airbnb' => 3,
108 'booking' => 3,
109 'tripadvisor' => 3,
110 'wordpress.org' => 3
111 ];
112 }
113
114
115 /**
116 * Tier allowed providers
117 *
118 * @return string[]
119 */
120 public function get_tier_allowed_providers()
121 {
122 $allowed = array(
123 'google',
124 'yelp'
125 );
126
127 if (Util::sbr_is_pro()) {
128 if ($this->get_license_tier() >= 2) {
129 $allowed[] = 'facebook';
130 $allowed[] = 'trustpilot';
131 $allowed[] = 'woocommerce';
132 $allowed[] = 'edd';
133 // SMASH-782 tier split: AliExpress ships on Plus (tier >= 2,
134 // e-commerce segment). Mirrors relay LicenseTiers::getAllowedProviders().
135 // Widening-only — Elite users keep it via this same block.
136 $allowed[] = 'aliexpress';
137 }
138 if ($this->get_license_tier() === 3) {
139 $allowed[] = 'tripadvisor';
140 $allowed[] = 'wordpress.org';
141 // Airbnb + Booking stay Elite-only (tier === 3, travel segment).
142 $allowed[] = 'airbnb';
143 $allowed[] = 'booking';
144 }
145 }
146 return $allowed;
147 }
148
149 /**
150 * How often, in seconds, feeds can be updated based on license tier
151 *
152 * @return float|int
153 */
154 public function get_update_frequency()
155 {
156 $frequency = 24 * HOUR_IN_SECONDS;
157 if ($this->get_license_tier() === 3) {
158 $frequency = 12 * HOUR_IN_SECONDS;
159 }
160
161 return $frequency;
162 }
163
164 /**
165 * Providers that have an API key saved in settings
166 *
167 * @return array
168 */
169 public function get_providers_with_api_keys()
170 {
171 // look through options for providers with API key supplied
172 return array();
173 }
174
175 public function update_status($status)
176 {
177 $current_status = get_option('sbr_statuses', array());
178 $updated_status = array_merge($current_status, $status);
179
180 return update_option('sbr_statuses', $updated_status);
181 }
182 }
183