Cache: Add additional state variables + single entry mode
fetchEntries is heaviliy realient on glboal state variables, and that was missed initially. The last commit c8bbb35aacee7af8527820f3d3d5fd47d1dbf340 fixed that partially, but did not catch all global state variables. Additionally, this fixed the clean_page mode as used by staticpage by adding the logic and event hook to printEntriesCached
This commit is contained in:
parent
c8bbb35aac
commit
e61d38a61d
@ -211,7 +211,7 @@ function &serendipity_fetchEntries($range = null, $full = true, $limit = '', $fe
|
||||
|
||||
if ($serendipity['useInternalCache']) {
|
||||
$cache = serendipity_setupCache();
|
||||
$key = md5(serialize($initial_args) . $serendipity['GET']['page']);
|
||||
$key = md5(serialize($initial_args) . $serendipity['short_archives'] . '||' . $serendipity['range'] . '||' . $serendipity['GET']['category'] . '||' . $serendipity['GET']['hide_category'] . '||' . $serendipity['GET']['viewAuthor'] . '||' . $serendipity['GET']['page'] . '||' . $serendipity['fetchLimit'] . '||' . $serendipity['max_fetch_limit'] . '||' . $serendipity['GET']['adminModule'] . '||' . serendipity_checkPermission('adminEntriesMaintainOthers') . '||' .$serendipity['showFutureEntries'] . '||' . $serendipity['archiveSortStable']);
|
||||
|
||||
$entries = $cache->get($key, "fetchEntries");
|
||||
if ($entries !== false) {
|
||||
@ -462,7 +462,8 @@ function &serendipity_fetchEntries($range = null, $full = true, $limit = '', $fe
|
||||
}
|
||||
|
||||
if ($serendipity['useInternalCache']) {
|
||||
$key = md5(serialize($initial_args) . $serendipity['GET']['page']);
|
||||
$key = md5(serialize($initial_args) . $serendipity['short_archives'] . '||' . $serendipity['range'] . '||' . $serendipity['GET']['category'] . '||' . $serendipity['GET']['hide_category'] . '||' . $serendipity['GET']['viewAuthor'] . '||' . $serendipity['GET']['page'] . '||' . $serendipity['fetchLimit'] . '||' . $serendipity['max_fetch_limit'] . '||' . $serendipity['GET']['adminModule'] . '||' . serendipity_checkPermission('adminEntriesMaintainOthers') . '||' .$serendipity['showFutureEntries'] . '||' . $serendipity['archiveSortStable']);
|
||||
|
||||
$cache->save(serialize($ret), $key, "fetchEntries");
|
||||
$cache->save($serendipity['fullCountQuery'], $key . '_fullCountQuery', "fetchEntries");
|
||||
}
|
||||
@ -1057,6 +1058,8 @@ function serendipity_printEntries($entries, $extended = 0, $preview = false, $sm
|
||||
serendipity_smarty_init(); // if not set, start Smarty templating to avoid member function "method()" on a non-object errors (was draft preview error, now at line 1239)
|
||||
}
|
||||
|
||||
$initial_args = array_values(func_get_args());
|
||||
|
||||
if ($use_hooks) {
|
||||
$addData = array('extended' => $extended, 'preview' => $preview);
|
||||
serendipity_plugin_api::hook_event('entry_display', $entries, $addData);
|
||||
@ -1276,10 +1279,8 @@ function serendipity_printEntries($entries, $extended = 0, $preview = false, $sm
|
||||
|
||||
if ($serendipity['useInternalCache']) {
|
||||
$cache = serendipity_setupCache();
|
||||
|
||||
$args = func_get_args();
|
||||
$args = array_values($args);
|
||||
$key = md5(serialize($args));
|
||||
$key = md5(serialize($initial_args));
|
||||
|
||||
$cache->save(serialize($dategroup), $key, "printEntries");
|
||||
}
|
||||
|
||||
@ -1307,6 +1308,26 @@ function serendipity_printEntriesCached($entries, $extended = 0, $preview = fals
|
||||
$key = md5(serialize($args));
|
||||
|
||||
if (($dategroup = $cache->get($key, "printEntries")) !== false) {
|
||||
|
||||
if ($use_hooks) {
|
||||
$addData = array('extended' => $extended, 'preview' => $preview);
|
||||
serendipity_plugin_api::hook_event('entry_display', $entries, $addData);
|
||||
|
||||
if (isset($entries['clean_page']) && $entries['clean_page'] === true) {
|
||||
if ($serendipity['view'] == '404') {
|
||||
$serendipity['view'] = 'plugin';
|
||||
}
|
||||
|
||||
$serendipity['smarty']->assign(array(
|
||||
'plugin_clean_page' => true,
|
||||
'view' => $serendipity['view'])
|
||||
);
|
||||
serendipity_smarty_fetch($smarty_block, 'entries.tpl', true);
|
||||
return; // no display of this item
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$dategroup = unserialize($dategroup);
|
||||
$serendipity['smarty']->assign('entries', $dategroup);
|
||||
|
||||
|
@ -48,8 +48,10 @@ switch ($serendipity['GET']['action']) {
|
||||
serendipity_header('HTTP/1.0 404 Not found');
|
||||
serendipity_header('Status: 404 Not found');
|
||||
}
|
||||
|
||||
serendipity_printEntries($entry, 1);
|
||||
|
||||
if (! serendipity_printEntriesCached($entry, 1)) {
|
||||
serendipity_printEntries($entry, 1);
|
||||
}
|
||||
} else {
|
||||
serendipity_printEntries(serendipity_fetchEntries($serendipity['range'], true, $serendipity['fetchLimit']));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user