mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-01-31 09:06:17 +00:00
Fixing CacheHelper and multiple cake:nocache tags in a view file, breaking cake:nocache following $content_for_layout. Fixes #136
This commit is contained in:
parent
347c175b85
commit
f12cbdba38
3 changed files with 58 additions and 12 deletions
|
@ -156,27 +156,30 @@ class CacheHelper extends AppHelper {
|
|||
} elseif ($file = fileExistsInPath($file)) {
|
||||
$file = file_get_contents($file);
|
||||
}
|
||||
|
||||
preg_match_all('/(<cake:nocache>(?<=<cake:nocache>)[\\s\\S]*?(?=<\/cake:nocache>)<\/cake:nocache>)/i', $cache, $oresult, PREG_PATTERN_ORDER);
|
||||
preg_match_all('/(?<=<cake:nocache>)([\\s\\S]*?)(?=<\/cake:nocache>)/i', $file, $result, PREG_PATTERN_ORDER);
|
||||
preg_match_all('/(<cake:nocache>(?<=<cake:nocache>)[\\s\\S]*?(?=<\/cake:nocache>)<\/cake:nocache>)/i', $cache, $outputResult, PREG_PATTERN_ORDER);
|
||||
preg_match_all('/(?<=<cake:nocache>)([\\s\\S]*?)(?=<\/cake:nocache>)/i', $file, $fileResult, PREG_PATTERN_ORDER);
|
||||
$fileResult = $fileResult[0];
|
||||
$outputResult = $outputResult[0];
|
||||
|
||||
if (!empty($this->__replace)) {
|
||||
foreach ($oresult['0'] as $k => $element) {
|
||||
foreach ($outputResult as $i => $element) {
|
||||
$index = array_search($element, $this->__match);
|
||||
if ($index !== false) {
|
||||
array_splice($oresult[0], $k, 1);
|
||||
unset($outputResult[$i]);
|
||||
}
|
||||
}
|
||||
$outputResult = array_values($outputResult);
|
||||
}
|
||||
|
||||
if (!empty($result['0'])) {
|
||||
$count = 0;
|
||||
foreach ($result['0'] as $block) {
|
||||
if (isset($oresult['0'][$count])) {
|
||||
$this->__replace[] = $block;
|
||||
$this->__match[] = $oresult['0'][$count];
|
||||
|
||||
if (!empty($fileResult)) {
|
||||
$i = 0;
|
||||
foreach ($fileResult as $cacheBlock) {
|
||||
if (isset($outputResult[$i])) {
|
||||
$this->__replace[] = $cacheBlock;
|
||||
$this->__match[] = $outputResult[$i];
|
||||
}
|
||||
$count++;
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -62,6 +62,8 @@ class CacheTestController extends Controller {
|
|||
$this->layout = 'cache_layout';
|
||||
$this->set('variable', 'variableValue');
|
||||
$this->set('superman', 'clark kent');
|
||||
$this->set('batman', 'bruce wayne');
|
||||
$this->set('spiderman', 'peter parker');
|
||||
}
|
||||
}
|
||||
/**
|
||||
|
@ -162,9 +164,35 @@ class CacheHelperTest extends CakeTestCase {
|
|||
$this->assertPattern('/if \(is_writable\(TMP\)\)\:/', $contents);
|
||||
$this->assertPattern('/php echo \$variable/', $contents);
|
||||
$this->assertPattern('/php echo microtime()/', $contents);
|
||||
$this->assertNoPattern('/cake:nocache/', $contents);
|
||||
|
||||
@unlink($filename);
|
||||
}
|
||||
|
||||
/**
|
||||
* test that multiple <cake:nocache> tags function with multiple nocache tags in the layout.
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function testMultipleNoCacheTagsInViewfile() {
|
||||
$this->Controller->cache_parsing();
|
||||
$this->Controller->cacheAction = 21600;
|
||||
$this->Controller->here = '/cacheTest/cache_parsing';
|
||||
$this->Controller->action = 'cache_parsing';
|
||||
|
||||
$View = new View($this->Controller);
|
||||
$result = $View->render('multiple_nocache');
|
||||
|
||||
$this->assertNoPattern('/cake:nocache/', $result);
|
||||
$this->assertNoPattern('/php echo/', $result);
|
||||
|
||||
$filename = CACHE . 'views' . DS . 'cachetest_cache_parsing.php';
|
||||
$this->assertTrue(file_exists($filename));
|
||||
|
||||
$contents = file_get_contents($filename);
|
||||
$this->assertNoPattern('/cake:nocache/', $contents);
|
||||
@unlink($filename);
|
||||
}
|
||||
/**
|
||||
* testComplexNoCache method
|
||||
*
|
||||
|
|
15
cake/tests/test_app/views/posts/multiple_nocache.ctp
Normal file
15
cake/tests/test_app/views/posts/multiple_nocache.ctp
Normal file
|
@ -0,0 +1,15 @@
|
|||
--view start--
|
||||
<cake:nocache>
|
||||
<?php echo $batman ?>
|
||||
</cake:nocache>
|
||||
|
||||
this view has 3 nocache blocks
|
||||
|
||||
<cake:nocache>
|
||||
<?php echo $spiderman; ?>
|
||||
</cake:nocache>
|
||||
|
||||
<cake:nocache>
|
||||
<?php echo 'some string'; ?>
|
||||
</cake:nocache>
|
||||
--view end--
|
Loading…
Add table
Reference in a new issue