PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 1.4.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v1.4.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 3 years ago
AccountService.php
103 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 $this->account = $this->fetchAccount();
69 set_transient( $this->cache_key, $this->account, 60 );
70 }
71 return $this->account;
72 }
73
74 /**
75 * Fetch the account.
76 *
77 * @return \SureCart\Models\Account
78 */
79 protected function fetchAccount() {
80 $this->account = Account::with( [ 'brand', 'brand.address', 'portal_protocol', 'tax_protocol', 'tax_protocol.address' ] )->find();
81 return $this->account;
82 }
83
84 /**
85 * Clear account cache.
86 *
87 * @return boolean
88 */
89 public function clearCache() {
90 return delete_transient( $this->cache_key );
91 }
92
93 /**
94 * Get the account model attribute
95 *
96 * @param string $attribute Attribute name.
97 * @return mixed
98 */
99 public function __get( $attribute ) {
100 return $this->account->$attribute ?? null;
101 }
102 }
103