/[drupal]/contributions/modules/advcache/node_cache.patch
ViewVC logotype

Contents of /contributions/modules/advcache/node_cache.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.4 - (show annotations) (download) (as text)
Wed Jun 27 10:34:15 2007 UTC (2 years, 6 months ago) by robertDouglass
Branch: MAIN
CVS Tags: DRUPAL-5--1-5, DRUPAL-5--1-4
Changes since 1.3: +18 -4 lines
File MIME type: text/x-patch
updating node_cache.patch and all_patches.patch with latest node caching fixes.
1 Index: modules/node/node.module
2 ===================================================================
3 RCS file: /cvs/drupal/drupal/modules/node/node.module,v
4 retrieving revision 1.776.2.1
5 diff -u -F^f -r1.776.2.1 node.module
6 --- modules/node/node.module 29 Jan 2007 21:51:53 -0000 1.776.2.1
7 +++ modules/node/node.module 27 Jun 2007 10:30:23 -0000
8 @@ -484,17 +484,31 @@ function node_invoke_nodeapi(&$node, $op
9 * A fully-populated node object.
10 */
11 function node_load($param = array(), $revision = NULL, $reset = NULL) {
12 + global $user;
13 static $nodes = array();
14
15 if ($reset) {
16 $nodes = array();
17 }
18
19 - $cachable = ($revision == NULL);
20 + $cache_id = 0;
21 $arguments = array();
22 if (is_numeric($param)) {
23 - if ($cachable && isset($nodes[$param])) {
24 - return is_object($nodes[$param]) ? drupal_clone($nodes[$param]) : $nodes[$param];
25 + if (module_exists('advcache')) {
26 + $cache_id = ($revision == NULL) ? $param. '::'. advcache_array2int($user->roles) : 0;
27 + }
28 + if ($cache_id > 0) {
29 + if (isset($nodes[$param])) {
30 + return is_object($nodes[$param]) ? drupal_clone($nodes[$param]) : $nodes[$param];
31 + }
32 + if ($user->uid != 1) {
33 + $cache = cache_get($cache_id, 'cache_node');
34 + if ($cache) {
35 + $cache = unserialize($cache->data);
36 + $nodes[$param] = is_object($cache) ? drupal_clone($cache) : $cache;
37 + return $nodes[$param];
38 + }
39 + }
40 }
41 $cond = 'n.nid = %d';
42 $arguments[] = $param;
43 @@ -532,8 +546,13 @@ function node_load($param = array(), $re
44 $node->$key = $value;
45 }
46 }
47 - if ($cachable) {
48 + if ($cache_id > 0) {
49 $nodes[$node->nid] = is_object($node) ? drupal_clone($node) : $node;
50 + if ($user->uid != 1) {
51 + if (!in_array($node->type, variable_get('advcache_node_exclude_types', array('poll')))) {
52 + cache_set($cache_id, 'cache_node', serialize($nodes[$node->nid]));
53 + }
54 + }
55 }
56 }
57
58 @@ -1919,8 +1938,8 @@ function node_validate($node, $form = ar
59 if (isset($node->body) && count(explode(' ', $node->body)) < $type->min_word_count) {
60 form_set_error('body', t('The body of your @type is too short. You need at least %words words.', array('%words' => $type->min_word_count, '@type' => $type->name)));
61 }
62 -
63 - if (isset($node->nid) && (node_last_changed($node->nid) > $node->changed)) {
64 + $changed = node_last_changed($node->nid);
65 + if (isset($node->nid) && ($changed > $node->changed)) {
66 form_set_error('changed', t('This content has been modified by another user, changes cannot be saved.'));
67 }
68

  ViewVC Help
Powered by ViewVC 1.1.2