|
|
@ -82,7 +82,7 @@ class FragmentCache extends Widget |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if ($this->getCachedContent() === false) { |
|
|
|
if ($this->getCachedContent() === false) { |
|
|
|
$this->view->cacheStack[] = $this; |
|
|
|
$this->getView()->cacheStack[] = $this; |
|
|
|
ob_start(); |
|
|
|
ob_start(); |
|
|
|
ob_implicit_flush(false); |
|
|
|
ob_implicit_flush(false); |
|
|
|
} |
|
|
|
} |
|
|
@ -100,14 +100,14 @@ class FragmentCache extends Widget |
|
|
|
echo $content; |
|
|
|
echo $content; |
|
|
|
} elseif ($this->cache instanceof Cache) { |
|
|
|
} elseif ($this->cache instanceof Cache) { |
|
|
|
$content = ob_get_clean(); |
|
|
|
$content = ob_get_clean(); |
|
|
|
array_pop($this->view->cacheStack); |
|
|
|
array_pop($this->getView()->cacheStack); |
|
|
|
if (is_array($this->dependency)) { |
|
|
|
if (is_array($this->dependency)) { |
|
|
|
$this->dependency = Yii::createObject($this->dependency); |
|
|
|
$this->dependency = Yii::createObject($this->dependency); |
|
|
|
} |
|
|
|
} |
|
|
|
$data = array($content, $this->dynamicPlaceholders); |
|
|
|
$data = array($content, $this->dynamicPlaceholders); |
|
|
|
$this->cache->set($this->calculateKey(), $data, $this->duration, $this->dependency); |
|
|
|
$this->cache->set($this->calculateKey(), $data, $this->duration, $this->dependency); |
|
|
|
|
|
|
|
|
|
|
|
if (empty($this->view->cacheStack) && !empty($this->dynamicPlaceholders)) { |
|
|
|
if (empty($this->getView()->cacheStack) && !empty($this->dynamicPlaceholders)) { |
|
|
|
$content = $this->updateDynamicContent($content, $this->dynamicPlaceholders); |
|
|
|
$content = $this->updateDynamicContent($content, $this->dynamicPlaceholders); |
|
|
|
} |
|
|
|
} |
|
|
|
echo $content; |
|
|
|
echo $content; |
|
|
@ -133,12 +133,12 @@ class FragmentCache extends Widget |
|
|
|
if (is_array($data) && count($data) === 2) { |
|
|
|
if (is_array($data) && count($data) === 2) { |
|
|
|
list ($content, $placeholders) = $data; |
|
|
|
list ($content, $placeholders) = $data; |
|
|
|
if (is_array($placeholders) && count($placeholders) > 0) { |
|
|
|
if (is_array($placeholders) && count($placeholders) > 0) { |
|
|
|
if (empty($this->view->cacheStack)) { |
|
|
|
if (empty($this->getView()->cacheStack)) { |
|
|
|
// outermost cache: replace placeholder with dynamic content |
|
|
|
// outermost cache: replace placeholder with dynamic content |
|
|
|
$content = $this->updateDynamicContent($content, $placeholders); |
|
|
|
$content = $this->updateDynamicContent($content, $placeholders); |
|
|
|
} |
|
|
|
} |
|
|
|
foreach ($placeholders as $name => $statements) { |
|
|
|
foreach ($placeholders as $name => $statements) { |
|
|
|
$this->view->addDynamicPlaceholder($name, $statements); |
|
|
|
$this->getView()->addDynamicPlaceholder($name, $statements); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
$this->_content = $content; |
|
|
|
$this->_content = $content; |
|
|
@ -151,7 +151,7 @@ class FragmentCache extends Widget |
|
|
|
protected function updateDynamicContent($content, $placeholders) |
|
|
|
protected function updateDynamicContent($content, $placeholders) |
|
|
|
{ |
|
|
|
{ |
|
|
|
foreach ($placeholders as $name => $statements) { |
|
|
|
foreach ($placeholders as $name => $statements) { |
|
|
|
$placeholders[$name] = $this->view->evaluateDynamicContent($statements); |
|
|
|
$placeholders[$name] = $this->getView()->evaluateDynamicContent($statements); |
|
|
|
} |
|
|
|
} |
|
|
|
return strtr($content, $placeholders); |
|
|
|
return strtr($content, $placeholders); |
|
|
|
} |
|
|
|
} |
|
|
|