1 <?php
2
3 4 5 6 7 8
9 class CartSiteConfig extends SiteConfigDecorator {
10
11 function () {
12 return array(
13 'db' => array(
14 'CartMinimalOrderPrice' => 'Decimal',
15
16 'CartAdminEmail' => 'Text',
17 'CartSenderEmail' => 'Text',
18 'CartRegisterEnabled' => 'Boolean',
19 'CartRegisterRequire' => 'Boolean',
20 'CartAdminNewOrderSubject' => 'Varchar(255)',
21 'CartUserNewOrderSubject' => 'Varchar(255)',
22 'CartUserStatusSubject' => 'Varchar(255)',
23 'CachedCartLifeTime' => 'Int',
24 ),
25 'defaults' => array(
26 'CartMinimalOrderPrice' => 0,
27
28 'CartRegisterEnabled' => false,
29 'CartRegisterRequire' => false,
30 'CartAdminNewOrderSubject' => _t('SiteConfig.DefaultCartAdminNewOrderSubject', 'New Order %d'),
31 'CartUserNewOrderSubject' => _t('SiteConfig.DefaultCartUserNewOrderSubject', 'Your order %d'),
32 'CartUserStatusSubject' => _t('SiteConfig.DefaultCartUserStatusSubject', 'Order %d status changed'),
33 'CachedCartLifeTime' => 30,
34 ),
35 );
36 }
37
38 39 40 41 42 43
44 static function CartRegistraionAvailable() {
45 return class_exists('ProfilePage');
46 }
47
48 49 50 51 52
53 function CartAdminEmail() {
54 return ($this->owner->CartAdminEmail) ? $this->owner->CartAdminEmail : $this->owner->AdminEmail();
55 }
56
57 58 59 60 61
62 function CartSenderEmail() {
63 return ($this->owner->CartSenderEmail) ? $this->owner->CartSenderEmail : $this->owner->SenderEmail();
64 }
65
66 67 68 69 70 71 72
73 function CartAdminNewOrderSubject($order) {
74 return $this->formatSubject('CartAdminNewOrderSubject', $order);
75 }
76
77 78 79 80 81 82 83
84 function CartUserNewOrderSubject($order) {
85 return $this->formatSubject('CartUserNewOrderSubject', $order);
86 }
87
88 89 90 91 92 93 94
95 function CartUserStatusSubject($order) {
96 return $this->formatSubject('CartUserStatusSubject', $order);
97 }
98
99 function updateCMSFields(FieldSet &$fields) {
100 $tab = WebylonSiteConfig::get_config_tab($fields, 'Cart');
101
102 $tab->push(new NumericField('CartMinimalOrderPrice', $this->owner->fieldLabel('CartMinimalOrderPrice')));
103
104
105 $tab->push(new EmailField('CartAdminEmail', $this->owner->fieldLabel('CartAdminEmail') . sprintf(' (%s)', $this->owner->AdminEmail())));
106 $tab->push(new EmailField('CartSenderEmail', $this->owner->fieldLabel('CartSenderEmail') . sprintf(' (%s)', $this->owner->SenderEmail())));
107
108 if (self::CartRegistraionAvailable()) {
109 $tab->push(new CheckboxField('CartRegisterEnabled', $this->owner->fieldLabel('CartRegisterEnabled')));
110 $tab->push(new CheckboxField('CartRegisterRequire', $this->owner->fieldLabel('CartRegisterRequire')));
111 }
112
113 $tab->push(new TextField('CartAdminNewOrderSubject', $this->owner->fieldLabel('CartAdminNewOrderSubject')));
114 $tab->push(new TextField('CartUserNewOrderSubject', $this->owner->fieldLabel('CartUserNewOrderSubject')));
115 $tab->push(new TextField('CartUserStatusSubject', $this->owner->fieldLabel('CartUserStatusSubject')));
116
117 $tab->push(new NumericField('CachedCartLifeTime', $this->owner->fieldLabel('CachedCartLifeTime')));
118 }
119
120 function onBeforeWrite() {
121 if (!self::CartRegistraionAvailable()) {
122 $this->owner->CartRegisterEnabled = 0;
123 $this->owner->CartRegisterRequire = 0;
124 }
125 }
126
127 128 129 130 131 132 133 134
135 private function formatSubject($name, $order) {
136 $str = ($this->owner->$name) ? $this->owner->$name : _t('SiteConfig.Default' . $name);
137 return (strstr($str, '%d') === false) ? $str : sprintf($str, $order);
138 }
139
140 }
141
[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the
Silverstripe Forums to ask development related questions.
-