PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.0.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.0.0
4.7.0 4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.1 4.5.0 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 3 years ago AccountServiceProvider.php 4 years ago
AccountService.php
112 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 * We get the account when the service is loaded.
26 * Since this is loaded in a service container, its
27 * cached so it only fetches once, no matter how many calls.
28 *
29 * This is also cached in a 60 second transient to prevent
30 * rate limited calls to the API.
31 *
32 * @param \SureCart\Support\Server $server The server utility to use.
33 */
34 public function __construct( \SureCart\Support\Server $server ) {
35 $cache = null;
36
37 if ( defined( 'SURECART_CACHE_ACCOUNT' ) ) {
38 $cache = SURECART_CACHE_ACCOUNT;
39 }
40
41 // do not cache requests if specifically set to false.
42 if ( false === $cache ) {
43 return $this->fetchAccount();
44 }
45
46 // cache requests if specifically set to true.
47 if ( true === $cache ) {
48 return $this->fetchCachedAccount();
49 }
50
51 // don't cache on localhost if constant is not set.
52 if ( $server->isLocalHost() ) {
53 return $this->fetchAccount();
54 }
55
56 // cache requests if not explicitly set.
57 return $this->fetchCachedAccount();
58 }
59
60 /**
61 * Fetch the cached account.
62 *
63 * @return \SureCart\Models\Account
64 */
65 public function fetchCachedAccount() {
66 $this->account = get_transient( $this->cache_key );
67 if ( false === $this->account ) {
68 // fetch account.
69 $this->account = $this->fetchAccount();
70
71 // there was an error or the account could not be fetched by other means.
72 if ( is_wp_error( $this->account ) || empty( $this->account->id ) ) {
73 delete_transient( $this->cache_key );
74 return $this->account;
75 }
76
77 // set the transient.
78 set_transient( $this->cache_key, $this->account, 15 * MINUTE_IN_SECONDS );
79 }
80 return $this->account;
81 }
82
83 /**
84 * Fetch the account.
85 *
86 * @return \SureCart\Models\Account
87 */
88 protected function fetchAccount() {
89 $this->account = Account::with( [ 'brand', 'brand.address', 'portal_protocol', 'tax_protocol', 'tax_protocol.address', 'subscription_protocol' ] )->find();
90 return $this->account;
91 }
92
93 /**
94 * Clear account cache.
95 *
96 * @return boolean
97 */
98 public function clearCache() {
99 return delete_transient( $this->cache_key );
100 }
101
102 /**
103 * Get the account model attribute
104 *
105 * @param string $attribute Attribute name.
106 * @return mixed
107 */
108 public function __get( $attribute ) {
109 return $this->account->$attribute ?? null;
110 }
111 }
112