public function apply(Mage_Core_Block_Abstract $block) { $layout = $block->getLayout(); if ($layout) { $keys = $block->getCacheKeys(); $keys[] = $block->getLayout()->getUpdate()->getCacheId(); $block->setCacheKeys($keys); } }
/** * Get generic key array including handle etc, that all blocks use * * @param Mage_Core_Block_Abstract $block * @return array */ protected function _getBasicKeys(Mage_Core_Block_Abstract $block) { $keys = $block->getCacheKeyInfo(); if (!is_array($keys)) { $keys = array(); } $keys[] = Mage::getSingleton('customer/session')->getCustomer()->getGroupId(); $keys[] = Mage::app()->getStore()->getCurrentCurrencyCode(); $keys[] = $block->getLayout()->getUpdate()->getCacheId(); $keys[] = 'SSL_' . intval(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') . '_'; return $keys; }
/** * @param Mage_Core_Block_Abstract $target * @param string[] $handlers * @param array $params * @return mixed */ public function raise($target, $handlers, $params = array()) { if (!empty($handlers)) { $event = new Varien_Object(array_merge($params, array('target' => $target, 'result' => false, 'stop_event_handling' => false))); foreach ($handlers as $handler) { $handler = explode('::', $handler); if ($object = $target->getLayout()->getBlock($handler[0])) { $method = $handler[1]; $event->setResult($object->{$method}($event)); if ($event->getStopEventHandling()) { break; } } } return $event->getResult(); } else { return false; } }
/** * Return a hash of the block layout XML in the current configuration, * this is used to identify a unique rendering of the block as we cache * all ESI requests * * @param Mage_Core_Block_Abstract $block */ public function getLayoutHash(Mage_Core_Block_Abstract $block) { $xml = $block->getLayout()->getNode(); $doc = new DOMDocument(); $doc->loadXML($xml->asXML()); $xpath = new DOMXpath($doc); $nodeList = $xpath->query("//block[@name='" . $block->getNameInLayout() . "']"); return sha1($doc->saveXML($nodeList->item(0))); }