1 <?php
2 3 4 5 6 7 8 9 10
11
12 MainFactory::load_class('GXCoreLoaderInterface');
13
14 15 16 17 18 19 20
21 class GXCoreLoader implements GXCoreLoaderInterface
22 {
23 24 25 26 27
28 protected $gxCoreLoaderSettings;
29
30 31 32 33 34
35 protected $ciDatabaseQueryBuilder;
36
37 38 39 40 41
42 protected $orderServiceFactory;
43
44
45 46 47 48 49
50 public function __construct(GXCoreLoaderSettingsInterface $gxCoreLoaderSettings)
51 {
52 $this->gxCoreLoaderSettings = $gxCoreLoaderSettings;
53 }
54
55
56 57 58 59 60 61 62 63 64 65 66
67 public function getService($serviceName)
68 {
69 switch($serviceName)
70 {
71 case 'Customer':
72 $customerServiceFactory = $this->_getCustomerServiceFactory();
73 $customerService = $customerServiceFactory->getCustomerService();
74
75 return $customerService;
76
77 case 'CustomerRead':
78 $customerServiceFactory = $this->_getCustomerServiceFactory();
79 $customerReadService = $customerServiceFactory->createCustomerReadService();
80
81 return $customerReadService;
82
83 case 'CustomerWrite':
84 $customerServiceFactory = $this->_getCustomerServiceFactory();
85 $customerWriteService = $customerServiceFactory->createCustomerWriteService();
86
87 return $customerWriteService;
88
89 case 'AddressBook':
90 $customerServiceFactory = $this->_getCustomerServiceFactory();
91 $addressBookService = $customerServiceFactory->getAddressBookService();
92
93 return $addressBookService;
94
95 case 'Country':
96 $customerServiceFactory = $this->_getCustomerServiceFactory();
97 $countryService = $customerServiceFactory->getCountryService();
98
99 return $countryService;
100
101 case 'RegistrationInputValidator':
102 $customerServiceFactory = $this->_getCustomerServiceFactory();
103 $registrationInputValidator = $customerServiceFactory->getCustomerRegistrationInputValidatorService();
104
105 return $registrationInputValidator;
106
107 case 'AccountInputValidator':
108 $customerServiceFactory = $this->_getCustomerServiceFactory();
109 $accountInputValidator = $customerServiceFactory->getCustomerAccountInputValidator();
110
111 return $accountInputValidator;
112
113 case 'AddressInputValidator':
114 $customerServiceFactory = $this->_getCustomerServiceFactory();
115 $accountInputValidator = $customerServiceFactory->getCustomerAddressInputValidatorService();
116
117 return $accountInputValidator;
118
119 case 'UserConfiguration':
120 $db = $this->getDatabaseQueryBuilder();
121 $userConfigurationReader = MainFactory::create('UserConfigurationReader', $db);
122 $userConfigurationWriter = MainFactory::create('UserConfigurationWriter', $db);
123 $userConfigurationService = MainFactory::create('UserConfigurationService', $userConfigurationReader,
124 $userConfigurationWriter);
125
126 return $userConfigurationService;
127
128 case 'Statistics':
129 $db = $this->getDatabaseQueryBuilder();
130 $xtcPrice = new xtcPrice($_SESSION['currency'],
131 $_SESSION['customers_status']['customers_status_id']);
132 $statisticsService = MainFactory::create('StatisticsService', $db, $xtcPrice);
133
134 return $statisticsService;
135
136 case 'Email':
137 $emailFactory = $this->_getEmailFactory();
138
139 return $emailFactory->createService();
140
141 case 'OrderObject':
142 $factory = $this->_getOrderServiceFactory();
143
144 return $factory->createOrderObjectService();
145
146 case 'OrderRead':
147 $factory = $this->_getOrderServiceFactory();
148
149 return $factory->createOrderReadService();
150
151 case 'OrderWrite':
152 $factory = $this->_getOrderServiceFactory();
153
154 return $factory->createOrderWriteService();
155
156 case 'Http':
157 $httpServiceFactory = MainFactory::create('HttpServiceFactory');
158
159 return $httpServiceFactory->createService();
160
161 case 'CategoryRead':
162 $factory = $this->_getCategoryServiceFactory();
163
164 return $factory->createCategoryReadService();
165
166 case 'CategoryWrite':
167 $factory = $this->_getCategoryServiceFactory();
168
169 return $factory->createCategoryWriteService();
170
171 case 'CategoryObject':
172 $factory = $this->_getCategoryServiceFactory();
173
174 return $factory->createCategoryObjectService();
175
176 case 'AddonValue':
177 $factory = $this->_getAddonValueServiceFactory();
178
179 return $factory->createAddonValueService();
180
181 case 'ProductRead':
182 $factory = $this->_getProductServiceFactory();
183
184 return $factory->createProductReadService();
185
186 case 'ProductWrite':
187 $factory = $this->_getProductServiceFactory();
188
189 return $factory->createProductWriteService();
190
191 case 'ProductObject':
192 $factory = $this->_getProductServiceFactory();
193
194 return $factory->createProductObjectService();
195
196 default:
197 throw new DomainException('Unknown service: ' . htmlentities($serviceName));
198 }
199 }
200
201
202 203 204 205 206 207 208 209 210
211 public function getDatabaseQueryBuilder()
212 {
213 if($this->ciDatabaseQueryBuilder == null)
214 {
215 $dbUser = $this->gxCoreLoaderSettings->getDatabaseUser();
216 $dbPassword = $this->gxCoreLoaderSettings->getDatabasePassword();
217 $dbServer = $this->gxCoreLoaderSettings->getDatabaseServer();
218 $dbName = $this->gxCoreLoaderSettings->getDatabaseName();
219 $dbSocket = ($this->gxCoreLoaderSettings->getDatabaseSocket()) ? '?socket='
220 . $this->gxCoreLoaderSettings->getDatabaseSocket() : '';
221
222 $connectionString = 'mysqli://' . $dbUser . ':' . $dbPassword . '@' . $dbServer . '/' . $dbName . $dbSocket;
223
224 $this->ciDatabaseQueryBuilder = CIDB($connectionString);
225 }
226
227 return $this->ciDatabaseQueryBuilder;
228 }
229
230
231 232 233 234 235
236 protected function _getCustomerServiceFactory()
237 {
238 $ciDatabaseQueryBuilder = $this->getDatabaseQueryBuilder();
239 $customerServiceFactory = MainFactory::create('CustomerServiceFactory', $ciDatabaseQueryBuilder);
240
241 return $customerServiceFactory;
242 }
243
244
245 246 247 248 249
250 protected function _getEmailFactory()
251 {
252 $db = $this->getDatabaseQueryBuilder();
253 $emailFactory = MainFactory::create('EmailFactory', $db);
254
255 return $emailFactory;
256 }
257
258
259 260 261 262 263
264 protected function _getOrderServiceFactory()
265 {
266 if($this->orderServiceFactory === null)
267 {
268 $db = $this->getDatabaseQueryBuilder();
269 $this->orderServiceFactory = MainFactory::create('OrderServiceFactory', $db);
270 }
271
272 return $this->orderServiceFactory;
273 }
274
275
276 277 278 279 280
281 protected function _getCategoryServiceFactory()
282 {
283 $db = $this->getDatabaseQueryBuilder();
284 $settings = MainFactory::create('EnvCategoryServiceSettings');
285 $categoryServiceFactory = MainFactory::create('CategoryServiceFactory', $db, $settings);
286
287 return $categoryServiceFactory;
288 }
289
290
291 292 293 294 295
296 protected function _getProductServiceFactory()
297 {
298 $db = $this->getDatabaseQueryBuilder();
299 $productServiceFactory = MainFactory::create('ProductServiceFactory', $db);
300
301 return $productServiceFactory;
302 }
303
304
305 306 307 308 309
310 public function _getAddonValueServiceFactory()
311 {
312 $db = $this->getDatabaseQueryBuilder();
313 $addonValueServiceFactory = MainFactory::create('AddonValueServiceFactory', $db);
314
315 return $addonValueServiceFactory;
316 }
317 }
318