PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.6.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.6.1
4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 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.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Account / AccountService.php
surecart / app / src / Account Last commit date
AccountService.php 2 years ago AccountServiceProvider.php 2 years ago
AccountService.php
122 lines
1 <?php
2 namespace SureCart\Account;
3
4 use SureCart\Models\Account;
5
6 /**
7 * Service for plugin activation.
8 */
9 class AccountService {
10 /**
11 * Holds the global account model.
12 *
13 * @var \SureCart\Models\Account;
14 */
15 protected $account = null;
16
17 /**
18 * The key for the cache.
19 *
20 * @var string
21 */
22 protected $cache_key = 'surecart_account';
23
24 /**
25 * Bootstrap the service.
26 *
27 * @return void
28 */
29 public function bootstrap() {
30 // clear account cache when account is updated.
31 \add_action( 'surecart/account_updated', [ $this, 'clearCache' ] );
32 }
33
34 /**
35 * We get the account when the service is loaded.
36 * Since this is loaded in a service container, its
37 * cached so it only fetches once, no matter how many calls.
38 *
39 * This is also cached in a 60 second transient to prevent
40 * rate limited calls to the API.
41 *
42 * @param \SureCart\Support\Server $server The server utility to use.
43 */
44 public function __construct( \SureCart\Support\Server $server ) {
45 $cache = null;
46
47 if ( defined( 'SURECART_CACHE_ACCOUNT' ) ) {
48 $cache = SURECART_CACHE_ACCOUNT;
49 }
50
51 // do not cache requests if specifically set to false.
52 if ( false === $cache ) {
53 return $this->fetchAccount();
54 }
55
56 // cache requests if specifically set to true.
57 if ( true === $cache ) {
58 return $this->fetchCachedAccount();
59 }
60
61 // don't cache on localhost if constant is not set.
62 if ( $server->isLocalHost() ) {
63 return $this->fetchAccount();
64 }
65
66 // cache requests if not explicitly set.
67 return $this->fetchCachedAccount();
68 }
69
70 /**
71 * Fetch the cached account.
72 *
73 * @return \SureCart\Models\Account
74 */
75 public function fetchCachedAccount() {
76 $this->account = get_transient( $this->cache_key );
77 if ( false === $this->account ) {
78 // fetch account.
79 $this->account = $this->fetchAccount();
80
81 // there was an error or the account could not be fetched by other means.
82 if ( is_wp_error( $this->account ) || empty( $this->account->id ) ) {
83 delete_transient( $this->cache_key );
84 return $this->account;
85 }
86
87 // set the transient.
88 set_transient( $this->cache_key, $this->account, 15 * MINUTE_IN_SECONDS );
89 }
90 return $this->account;
91 }
92
93 /**
94 * Fetch the account.
95 *
96 * @return \SureCart\Models\Account
97 */
98 protected function fetchAccount() {
99 $this->account = Account::with( [ 'brand', 'brand.address', 'portal_protocol', 'tax_protocol', 'tax_protocol.address', 'subscription_protocol', 'shipping_protocol' ] )->find();
100 return $this->account;
101 }
102
103 /**
104 * Clear account cache.
105 *
106 * @return boolean
107 */
108 public function clearCache() {
109 return delete_transient( $this->cache_key );
110 }
111
112 /**
113 * Get the account model attribute
114 *
115 * @param string $attribute Attribute name.
116 * @return mixed
117 */
118 public function __get( $attribute ) {
119 return $this->account->$attribute ?? null;
120 }
121 }
122