/** * Generate secret key for controller and action based on form key * * @param string $routeName * @param string $controller Controller name * @param string $action Action name * @return string */ public function getSecretKey($routeName = null, $controller = null, $action = null) { $salt = $this->_coreSession->getFormKey(); $request = $this->getRequest(); if (!$routeName) { if ($request->getBeforeForwardInfo('route_name') !== null) { $routeName = $request->getBeforeForwardInfo('route_name'); } else { $routeName = $request->getRouteName(); } } if (!$controller) { if ($request->getBeforeForwardInfo('controller_name') !== null) { $controller = $request->getBeforeForwardInfo('controller_name'); } else { $controller = $request->getControllerName(); } } if (!$action) { if ($request->getBeforeForwardInfo('action_name') !== null) { $action = $request->getBeforeForwardInfo('action_name'); } else { $action = $request->getActionName(); } } $secret = $routeName . $controller . $action . $salt; return $this->_coreHelper->getHash($secret); }
/** * Retrieve Session Form Key * * @return string A 16 bit unique key for forms */ public function getFormKey() { if (Mage::registry('replace_form_key') && !Mage::app()->getRequest()->getParam('form_key', false)) { // flag request for ESI processing Mage::register('turpentine_esi_flag', true, true); return '{{form_key_esi_placeholder}}'; } else { return parent::getFormKey(); } }
/** * Retrive add to cart url * * @param Mage_Catalog_Model_Product $product * @return string */ public function getAddToCartUrl($product) { $beforeCompareUrl = $this->_catalogSession->getBeforeCompareUrl(); $params = array('product' => $product->getId(), Mage_Core_Controller_Front_Action::PARAM_NAME_URL_ENCODED => $this->getEncodedUrl($beforeCompareUrl), Mage_Core_Model_Url::FORM_KEY => $this->_coreSession->getFormKey()); return $this->_getUrl('checkout/cart/add', $params); }