PageRenderTime 49ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/opencart_v1.4/upload/catalog/controller/checkout/guest_step_2.php

http://coderstalk.googlecode.com/
PHP | 268 lines | 199 code | 67 blank | 2 comment | 45 complexity | c5ad86c398e3ba62b888be8709c7df64 MD5 | raw file
Possible License(s): GPL-3.0, LGPL-2.1, AGPL-3.0
  1. <?php
  2. class ControllerCheckoutGuestStep2 extends Controller {
  3. private $error = array();
  4. public function index() {
  5. if (!$this->cart->hasProducts() || (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout'))) {
  6. $this->redirect($this->url->https('checkout/cart'));
  7. }
  8. if ($this->customer->isLogged()) {
  9. $this->redirect($this->url->https('checkout/shipping'));
  10. }
  11. if (!$this->config->get('config_guest_checkout') || $this->cart->hasDownload()) {
  12. $this->session->data['redirect'] = $this->url->https('checkout/shipping');
  13. $this->redirect($this->url->https('account/login'));
  14. }
  15. if (!isset($this->session->data['guest'])) {
  16. $this->redirect($this->url->https('checkout/guest_step_1'));
  17. }
  18. if (!$this->cart->hasShipping()) {
  19. unset($this->session->data['shipping_method']);
  20. unset($this->session->data['shipping_methods']);
  21. $this->tax->setZone($this->config->get('config_country_id'), $this->config->get('config_zone_id'));
  22. }
  23. $this->load->model('checkout/extension');
  24. // Shipping Methods
  25. if ($this->cart->hasShipping() && !isset($this->session->data['shipping_methods'])) {
  26. $quote_data = array();
  27. $results = $this->model_checkout_extension->getExtensions('shipping');
  28. foreach ($results as $result) {
  29. $this->load->model('shipping/' . $result['key']);
  30. $quote = $this->{'model_shipping_' . $result['key']}->getQuote($this->session->data['guest']);
  31. if ($quote) {
  32. $quote_data[$result['key']] = array(
  33. 'title' => $quote['title'],
  34. 'quote' => $quote['quote'],
  35. 'sort_order' => $quote['sort_order'],
  36. 'error' => $quote['error']
  37. );
  38. }
  39. }
  40. $sort_order = array();
  41. foreach ($quote_data as $key => $value) {
  42. $sort_order[$key] = $value['sort_order'];
  43. }
  44. array_multisort($sort_order, SORT_ASC, $quote_data);
  45. $this->session->data['shipping_methods'] = $quote_data;
  46. }
  47. // Payment Methods
  48. $method_data = array();
  49. $results = $this->model_checkout_extension->getExtensions('payment');
  50. foreach ($results as $result) {
  51. $this->load->model('payment/' . $result['key']);
  52. $method = $this->{'model_payment_' . $result['key']}->getMethod($this->session->data['guest']);
  53. if ($method) {
  54. $method_data[$result['key']] = $method;
  55. }
  56. }
  57. $sort_order = array();
  58. foreach ($method_data as $key => $value) {
  59. $sort_order[$key] = $value['sort_order'];
  60. }
  61. array_multisort($sort_order, SORT_ASC, $method_data);
  62. $this->session->data['payment_methods'] = $method_data;
  63. $this->language->load('checkout/guest_step_2');
  64. if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
  65. if (isset($this->request->post['shipping_method'])) {
  66. $shipping = explode('.', $this->request->post['shipping_method']);
  67. $this->session->data['shipping_method'] = $this->session->data['shipping_methods'][$shipping[0]]['quote'][$shipping[1]];
  68. }
  69. $this->session->data['payment_method'] = $this->session->data['payment_methods'][$this->request->post['payment_method']];
  70. $this->session->data['comment'] = $this->request->post['comment'];
  71. $this->redirect($this->url->https('checkout/guest_step_3'));
  72. }
  73. $this->document->title = $this->language->get('heading_title');
  74. $this->document->breadcrumbs = array();
  75. $this->document->breadcrumbs[] = array(
  76. 'href' => $this->url->http('common/home'),
  77. 'text' => $this->language->get('text_home'),
  78. 'separator' => FALSE
  79. );
  80. $this->document->breadcrumbs[] = array(
  81. 'href' => $this->url->http('checkout/cart'),
  82. 'text' => $this->language->get('text_cart'),
  83. 'separator' => $this->language->get('text_separator')
  84. );
  85. $this->document->breadcrumbs[] = array(
  86. 'href' => $this->url->https('checkout/guest_step_1'),
  87. 'text' => $this->language->get('text_guest_step_1'),
  88. 'separator' => $this->language->get('text_separator')
  89. );
  90. $this->document->breadcrumbs[] = array(
  91. 'href' => $this->url->https('checkout/guest_step_2'),
  92. 'text' => $this->language->get('text_guest_step_2'),
  93. 'separator' => $this->language->get('text_separator')
  94. );
  95. $this->data['heading_title'] = $this->language->get('heading_title');
  96. $this->data['text_shipping_method'] = $this->language->get('text_shipping_method');
  97. $this->data['text_shipping_methods'] = $this->language->get('text_shipping_methods');
  98. $this->data['text_payment_method'] = $this->language->get('text_payment_method');
  99. $this->data['text_payment_methods'] = $this->language->get('text_payment_methods');
  100. $this->data['text_comments'] = $this->language->get('text_comments');
  101. $this->data['entry_shipping'] = $this->language->get('entry_shipping');
  102. $this->data['entry_payment'] = $this->language->get('entry_payment');
  103. $this->data['button_continue'] = $this->language->get('button_continue');
  104. $this->data['button_back'] = $this->language->get('button_back');
  105. if (isset($this->session->data['error'])) {
  106. $this->data['error_warning'] = $this->session->data['error'];
  107. unset($this->session->data['error']);
  108. } elseif (isset($this->error['warning'])) {
  109. $this->data['error_warning'] = $this->error['warning'];
  110. } else {
  111. $this->data['error_warning'] = '';
  112. }
  113. $this->data['action'] = $this->url->https('checkout/guest_step_2');
  114. $this->data['shipping_methods'] = $this->session->data['shipping_methods'];
  115. if (isset($this->request->post['shipping'])) {
  116. $this->data['shipping'] = $this->request->post['shipping_method'];
  117. } elseif (isset($this->session->data['shipping_method'])) {
  118. $this->data['shipping'] = $this->session->data['shipping_method']['id'];
  119. } else {
  120. $this->data['shipping'] = '';
  121. }
  122. $this->data['payment_methods'] = $this->session->data['payment_methods'];
  123. if (isset($this->request->post['payment_method'])) {
  124. $this->data['payment'] = $this->request->post['payment_method'];
  125. } elseif (isset($this->session->data['payment_method'])) {
  126. $this->data['payment'] = $this->session->data['payment_method']['id'];
  127. } else {
  128. $this->data['payment'] = '';
  129. }
  130. $this->load->model('localisation/country');
  131. $this->data['countries'] = $this->model_localisation_country->getCountries();
  132. if (isset($this->session->data['comment'])) {
  133. $this->data['comment'] = $this->session->data['comment'];
  134. } else {
  135. $this->data['comment'] = '';
  136. }
  137. if ($this->config->get('config_checkout')) {
  138. $this->load->model('catalog/information');
  139. $information_info = $this->model_catalog_information->getInformation($this->config->get('config_checkout'));
  140. if ($information_info) {
  141. $this->data['text_agree'] = sprintf($this->language->get('text_agree'), $this->url->http('information/information&information_id=' . $this->config->get('config_checkout')), $information_info['title']);
  142. } else {
  143. $this->data['text_agree'] = '';
  144. }
  145. } else {
  146. $this->data['text_agree'] = '';
  147. }
  148. if (isset($this->request->post['agree'])) {
  149. $this->data['agree'] = $this->request->post['agree'];
  150. } else {
  151. $this->data['agree'] = '';
  152. }
  153. $this->data['back'] = $this->url->http('checkout/guest_step_1');
  154. if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/checkout/guest_step_2.tpl')) {
  155. $this->template = $this->config->get('config_template') . '/template/checkout/guest_step_2.tpl';
  156. } else {
  157. $this->template = 'default/template/checkout/guest_step_2.tpl';
  158. }
  159. $this->children = array(
  160. 'common/header',
  161. 'common/footer',
  162. 'common/column_left',
  163. 'common/column_right'
  164. );
  165. $this->response->setOutput($this->render(TRUE), $this->config->get('config_compression'));
  166. }
  167. private function validate() {
  168. if ($this->cart->hasShipping()) {
  169. if (!isset($this->request->post['shipping_method']) || !$this->request->post['shipping_method']) {
  170. $this->error['warning'] = $this->language->get('error_shipping');
  171. } else {
  172. $shipping = explode('.', $this->request->post['shipping_method']);
  173. if (!isset($this->session->data['shipping_methods'][$shipping[0]]['quote'][$shipping[1]])) {
  174. $this->error['warning'] = $this->language->get('error_shipping');
  175. }
  176. }
  177. }
  178. if (!isset($this->request->post['payment_method'])) {
  179. $this->error['warning'] = $this->language->get('error_payment');
  180. } else {
  181. if (!isset($this->session->data['payment_methods'][$this->request->post['payment_method']])) {
  182. $this->error['warning'] = $this->language->get('error_payment');
  183. }
  184. }
  185. if ($this->config->get('config_checkout')) {
  186. $this->load->model('catalog/information');
  187. $information_info = $this->model_catalog_information->getInformation($this->config->get('config_checkout'));
  188. if ($information_info) {
  189. if (!isset($this->request->post['agree'])) {
  190. $this->error['warning'] = sprintf($this->language->get('error_agree'), $information_info['title']);
  191. }
  192. }
  193. }
  194. if (!$this->error) {
  195. return TRUE;
  196. } else {
  197. return FALSE;
  198. }
  199. }
  200. }
  201. ?>