1: | <?php
|
2: | namespace Opencart\Catalog\Model\Checkout;
|
3: | |
4: | |
5: | |
6: | |
7: |
|
8: | class ShippingMethod extends \Opencart\System\Engine\Controller {
|
9: | |
10: | |
11: | |
12: | |
13: | |
14: | |
15: |
|
16: | public function getMethods(array $shipping_address): array {
|
17: | $method_data = [];
|
18: |
|
19: | $this->load->model('setting/extension');
|
20: |
|
21: | $results = $this->model_setting_extension->getExtensionsByType('shipping');
|
22: |
|
23: | foreach ($results as $result) {
|
24: | if ($this->config->get('shipping_' . $result['code'] . '_status')) {
|
25: | $this->load->model('extension/' . $result['extension'] . '/shipping/' . $result['code']);
|
26: |
|
27: | if (is_callable([$this->{'model_extension_' . $result['extension'] . '_shipping_' . $result['code']}, 'getQuote'])) {
|
28: | $quote = $this->{'model_extension_' . $result['extension'] . '_shipping_' . $result['code']}->getQuote($shipping_address);
|
29: |
|
30: | if ($quote) {
|
31: | $method_data[$result['code']] = $quote;
|
32: | }
|
33: | }
|
34: | }
|
35: | }
|
36: |
|
37: | $sort_order = [];
|
38: |
|
39: | foreach ($method_data as $key => $value) {
|
40: | $sort_order[$key] = $value['sort_order'];
|
41: | }
|
42: |
|
43: | array_multisort($sort_order, SORT_ASC, $method_data);
|
44: |
|
45: | return $method_data;
|
46: | }
|
47: | }
|
48: | |