PageRenderTime 45ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/app/code/core/Mage/Sales/Helper/Guest.php

https://bitbucket.org/ttphong2612/billigastamplar-new.se
PHP | 190 lines | 116 code | 18 blank | 56 comment | 41 complexity | 7430c8340b742c89f1b9df79ccfd6423 MD5 | raw file
  1. <?php
  2. /**
  3. * Magento
  4. *
  5. * NOTICE OF LICENSE
  6. *
  7. * This source file is subject to the Open Software License (OSL 3.0)
  8. * that is bundled with this package in the file LICENSE.txt.
  9. * It is also available through the world-wide-web at this URL:
  10. * http://opensource.org/licenses/osl-3.0.php
  11. * If you did not receive a copy of the license and are unable to
  12. * obtain it through the world-wide-web, please send an email
  13. * to license@magento.com so we can send you a copy immediately.
  14. *
  15. * DISCLAIMER
  16. *
  17. * Do not edit or add to this file if you wish to upgrade Magento to newer
  18. * versions in the future. If you wish to customize Magento for your
  19. * needs please refer to http://www.magento.com for more information.
  20. *
  21. * @category Mage
  22. * @package Mage_Sales
  23. * @copyright Copyright (c) 2006-2018 Magento, Inc. (http://www.magento.com)
  24. * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
  25. */
  26. /**
  27. * Sales module base helper
  28. *
  29. * @author Magento Core Team <core@magentocommerce.com>
  30. */
  31. class Mage_Sales_Helper_Guest extends Mage_Core_Helper_Data
  32. {
  33. /**
  34. * Cookie params
  35. */
  36. protected $_cookieName = 'guest-view';
  37. protected $_lifeTime = 600;
  38. /**
  39. * Try to load valid order by $_POST or $_COOKIE
  40. *
  41. * @return bool|null
  42. */
  43. public function loadValidOrder()
  44. {
  45. if (Mage::getSingleton('customer/session')->isLoggedIn()) {
  46. Mage::app()->getResponse()->setRedirect(Mage::getUrl('sales/order/history'));
  47. return false;
  48. }
  49. $post = Mage::app()->getRequest()->getPost();
  50. $errors = false;
  51. /** @var $order Mage_Sales_Model_Order */
  52. $order = Mage::getModel('sales/order');
  53. /** @var Mage_Core_Model_Cookie $cookieModel */
  54. $cookieModel = Mage::getSingleton('core/cookie');
  55. $errorMessage = 'Entered data is incorrect. Please try again.';
  56. if (empty($post) && !$cookieModel->get($this->_cookieName)) {
  57. Mage::app()->getResponse()->setRedirect(Mage::getUrl('sales/guest/form'));
  58. return false;
  59. } elseif (!empty($post) && isset($post['oar_order_id']) && isset($post['oar_type'])) {
  60. $type = $post['oar_type'];
  61. $incrementId = $post['oar_order_id'];
  62. $lastName = $post['oar_billing_lastname'];
  63. $email = $post['oar_email'];
  64. $zip = $post['oar_zip'];
  65. if (empty($incrementId) || empty($lastName) || empty($type) || (!in_array($type, array('email', 'zip')))
  66. || ($type == 'email' && empty($email)) || ($type == 'zip' && empty($zip))) {
  67. $errors = true;
  68. }
  69. if (!$errors) {
  70. $order->loadByIncrementId($incrementId);
  71. }
  72. if ($order->getId()) {
  73. $billingAddress = $order->getBillingAddress();
  74. if ((strtolower($lastName) != strtolower($billingAddress->getLastname()))
  75. || ($type == 'email'
  76. && strtolower($email) != strtolower($order->getCustomerEmail()))
  77. || ($type == 'zip'
  78. && (strtolower($zip) != strtolower($billingAddress->getPostcode())))
  79. ) {
  80. $errors = true;
  81. }
  82. } else {
  83. $errors = true;
  84. }
  85. if ($errors === false && !is_null($order->getCustomerId())) {
  86. $errorMessage = 'Please log in to view your order details.';
  87. $errors = true;
  88. }
  89. if (!$errors) {
  90. $toCookie = base64_encode($order->getProtectCode() . ':' . $incrementId);
  91. $cookieModel->set($this->_cookieName, $toCookie, $this->_lifeTime, '/');
  92. }
  93. } elseif ($cookieModel->get($this->_cookieName)) {
  94. $cookie = $cookieModel->get($this->_cookieName);
  95. $cookieOrder = $this->_loadOrderByCookie( $cookie );
  96. if( !is_null( $cookieOrder) ){
  97. if( is_null( $cookieOrder->getCustomerId() ) ){
  98. $cookieModel->renew($this->_cookieName, $this->_lifeTime, '/');
  99. $order = $cookieOrder;
  100. } else {
  101. $errorMessage = 'Please log in to view your order details.';
  102. $errors = true;
  103. }
  104. } else {
  105. $errors = true;
  106. }
  107. }
  108. if (!$errors && $order->getId()) {
  109. Mage::register('current_order', $order);
  110. return true;
  111. }
  112. Mage::getSingleton('core/session')->addError($this->__($errorMessage));
  113. Mage::app()->getResponse()->setRedirect(Mage::getUrl('sales/guest/form'));
  114. return false;
  115. }
  116. /**
  117. * Get Breadcrumbs for current controller action
  118. *
  119. * @param Mage_Core_Controller_Front_Action $controller
  120. */
  121. public function getBreadcrumbs($controller)
  122. {
  123. $breadcrumbs = $controller->getLayout()->getBlock('breadcrumbs');
  124. $breadcrumbs->addCrumb(
  125. 'home',
  126. array(
  127. 'label' => $this->__('Home'),
  128. 'title' => $this->__('Go to Home Page'),
  129. 'link' => Mage::getBaseUrl()
  130. )
  131. );
  132. $breadcrumbs->addCrumb(
  133. 'cms_page',
  134. array(
  135. 'label' => $this->__('Order Information'),
  136. 'title' => $this->__('Order Information')
  137. )
  138. );
  139. }
  140. /**
  141. * Try to load order by cookie hash
  142. *
  143. * @param string|null $cookie
  144. * @return null|Mage_Sales_Model_Order
  145. */
  146. protected function _loadOrderByCookie($cookie = null)
  147. {
  148. if (!is_null($cookie)) {
  149. $cookieData = explode(':', base64_decode($cookie));
  150. $protectCode = isset($cookieData[0]) ? $cookieData[0] : null;
  151. $incrementId = isset($cookieData[1]) ? $cookieData[1] : null;
  152. if (!empty($protectCode) && !empty($incrementId)) {
  153. /** @var $order Mage_Sales_Model_Order */
  154. $order = Mage::getModel('sales/order');
  155. $order->loadByIncrementId($incrementId);
  156. if ($order->getProtectCode() === $protectCode) {
  157. return $order;
  158. }
  159. }
  160. }
  161. return null;
  162. }
  163. /**
  164. * Getter for $this->_cookieName
  165. *
  166. * @return string
  167. */
  168. public function getCookieName()
  169. {
  170. return $this->_cookieName;
  171. }
  172. }