PageRenderTime 42ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/app/code/core/Mage/XmlConnect/Model/Observer.php

https://gitlab.com/blingbang2016/shop
PHP | 188 lines | 95 code | 9 blank | 84 comment | 18 complexity | ab7a3f533bb40fd6503348f468adaee4 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_XmlConnect
  23. * @copyright Copyright (c) 2006-2016 X.commerce, Inc. and affiliates (http://www.magento.com)
  24. * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
  25. */
  26. /**
  27. * XmlConnect module observer
  28. *
  29. * @category Mage
  30. * @package Mage_Xmlconnect
  31. * @author Magento Core Team <core@magentocommerce.com>
  32. */
  33. class Mage_XmlConnect_Model_Observer
  34. {
  35. /**
  36. * List of config field names which changing affects mobile applications behaviour
  37. *
  38. * @var array
  39. */
  40. protected $_appDependOnConfigFieldPathes = array(
  41. Mage_XmlConnect_Model_Application::XML_PATH_PAYPAL_BUSINESS_ACCOUNT,
  42. Mage_Checkout_Helper_Data::XML_PATH_GUEST_CHECKOUT,
  43. 'sendfriend/email/max_recipients',
  44. 'sendfriend/email/allow_guest',
  45. 'general/locale/code',
  46. 'currency/options/default',
  47. Mage_XmlConnect_Model_Application::XML_PATH_SECURE_BASE_LINK_URL,
  48. Mage_XmlConnect_Model_Application::XML_PATH_GENERAL_RESTRICTION_IS_ACTIVE,
  49. Mage_XmlConnect_Model_Application::XML_PATH_GENERAL_RESTRICTION_MODE,
  50. Mage_XmlConnect_Model_Application::XML_PATH_DEFAULT_CACHE_LIFETIME
  51. );
  52. /**
  53. * Stop website stub or private sales restriction
  54. *
  55. * @param Varien_Event_Observer $observer
  56. */
  57. public function restrictWebsite($observer)
  58. {
  59. $controller = $observer->getEvent()->getController();
  60. if ($controller instanceof Mage_XmlConnect_Controller_AdminAction
  61. || $controller instanceof Mage_XmlConnect_Controller_Action
  62. || Mage::app()->getRequest()->getModuleName() == 'xmlconnect'
  63. ) {
  64. $observer->getEvent()->getResult()->setShouldProceed(false);
  65. }
  66. }
  67. /**
  68. * Update all applications "updated at" parameter with current date on save some configurations
  69. *
  70. * @param Varien_Event_Observer $observer
  71. */
  72. public function changeUpdatedAtParamOnConfigSave($observer)
  73. {
  74. $configData = $observer->getEvent()->getConfigData();
  75. if ($configData && (int)$configData->isValueChanged()
  76. && in_array($configData->getPath(), $this->_appDependOnConfigFieldPathes)
  77. ) {
  78. Mage::getModel('xmlconnect/application')->updateAllAppsUpdatedAtParameter();
  79. }
  80. }
  81. /**
  82. * Send a message if Start Date (Queue Date) is empty
  83. *
  84. * @param Varien_Event_Observer $observer
  85. * @return bool
  86. */
  87. public function sendMessageImmediately($observer)
  88. {
  89. /** @var $message Mage_XmlConnect_Model_Queue */
  90. $message = $observer->getEvent()->getData('queueMessage');
  91. $execTime = strtotime($message->getExecTime());
  92. $isPastTime = false;
  93. if (false !== $execTime) {
  94. $isPastTime = strtotime(Mage::getSingleton('core/date')->gmtDate()) - strtotime($message->getExecTime());
  95. }
  96. if ($isPastTime === false || $isPastTime > 0) {
  97. $message->setExecTime(Mage::getSingleton('core/date')->gmtDate());
  98. Mage::helper('xmlconnect')->sendBroadcastMessage($message);
  99. return true;
  100. }
  101. return false;
  102. }
  103. /**
  104. * Send scheduled messages
  105. *
  106. * @return null
  107. */
  108. public function scheduledSend()
  109. {
  110. $countOfQueue = Mage::getStoreConfig(Mage_XmlConnect_Model_Queue::XML_PATH_CRON_MESSAGES_COUNT);
  111. $collection = Mage::getModel('xmlconnect/queue')->getCollection()->addOnlyForSendingFilter()
  112. ->setPageSize($countOfQueue)->setCurPage(1)->load();
  113. foreach ($collection as $message) {
  114. if ($message->getId()) {
  115. Mage::helper('xmlconnect')->sendBroadcastMessage($message);
  116. }
  117. }
  118. }
  119. /**
  120. * Clear category images cache
  121. *
  122. * @return null
  123. */
  124. public function clearCategoryImagesCache()
  125. {
  126. Mage::getModel('xmlconnect/catalog_category_image')->clearCache();
  127. }
  128. /**
  129. * Handle xmlconnect admin actions
  130. *
  131. * @param Varien_Event_Observer $event
  132. * @return null
  133. */
  134. public function actionFrontPreDispatchXmlAdmin($event)
  135. {
  136. /** @var $request Mage_Core_Controller_Request_Http */
  137. $request = Mage::app()->getRequest();
  138. if (true === $this->_checkAdminController($request, $event->getControllerAction())) {
  139. $request->setInternallyForwarded()->setDispatched(true);
  140. }
  141. }
  142. /**
  143. * Forward unauthorized users for xmlconnect admin actions
  144. *
  145. * @param Varien_Event_Observer $event
  146. * @return null
  147. */
  148. public function actionPreDispatchXmlAdmin($event)
  149. {
  150. /** @var $request Mage_Core_Controller_Request_Http */
  151. $request = Mage::app()->getRequest();
  152. if (false === $this->_checkAdminController($request, $event->getControllerAction())
  153. && !Mage::getSingleton('admin/session')->isLoggedIn()
  154. ) {
  155. $request->setInternallyForwarded()->setRouteName('adminhtml')->setControllerName('connect_user')
  156. ->setActionName('loginform')->setDispatched(false);
  157. }
  158. }
  159. /**
  160. * Check is controller action is allowed w/o authorization
  161. *
  162. * @param Mage_Core_Controller_Request_Http $request
  163. * @param Mage_XmlConnect_Controller_AdminAction $controllerAction
  164. * @return bool|null
  165. */
  166. protected function _checkAdminController($request, $controllerAction)
  167. {
  168. if ($controllerAction instanceof Mage_XmlConnect_Controller_AdminAction) {
  169. foreach ($controllerAction->getAllowedControllerActions() as $controller => $allowedActions) {
  170. if ($request->getControllerName() == $controller
  171. && in_array(strtolower($request->getActionName()), $allowedActions)
  172. ) {
  173. return true;
  174. }
  175. }
  176. return false;
  177. }
  178. }
  179. }