Ejemplo n.º 1
0
 public function apply(Mage_Core_Block_Abstract $block)
 {
     $layout = $block->getLayout();
     if ($layout) {
         $keys = $block->getCacheKeys();
         $keys[] = $block->getLayout()->getUpdate()->getCacheId();
         $block->setCacheKeys($keys);
     }
 }
Ejemplo n.º 2
0
 /**
  * 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;
 }
Ejemplo n.º 3
0
 /**
  * @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;
     }
 }
Ejemplo n.º 4
0
 /**
  * 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)));
 }