From fdd35767f3f9a78acabb52a39f38e6459d127f59 Mon Sep 17 00:00:00 2001 From: samhemelryk Date: Tue, 8 Sep 2009 08:49:12 +0000 Subject: [PATCH] navigation MDL-20227 Added compare function This allows us to compare the modinfo stored in the cache with that against that active course --- lib/navigationlib.php | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/lib/navigationlib.php b/lib/navigationlib.php index c6f918fc92..7a8549997a 100644 --- a/lib/navigationlib.php +++ b/lib/navigationlib.php @@ -912,7 +912,7 @@ class global_navigation extends navigation_node { $course = $PAGE->course; } - if (!$this->cache->cached('modinfo'.$course->id)) { + if (!$this->cache->compare('modinfo'.$course->id, $course->modinfo)) { $this->cache->{'modinfo'.$course->id} = get_fast_modinfo($course); } $modinfo = $this->cache->{'modinfo'.$course->id}; @@ -969,7 +969,7 @@ class global_navigation extends navigation_node { $course = $PAGE->course; } - if (!$this->cache->cached('modinfo'.$course->id)) { + if (!$this->cache->compare('modinfo'.$course->id, $course->modinfo)) { $this->cache->{'modinfo'.$course->id} = get_fast_modinfo($course); } $modinfo = $this->cache->{'modinfo'.$course->id}; @@ -1276,7 +1276,7 @@ class global_navigation extends navigation_node { $sections = $this->cache->$coursesecstr; } - if (!$this->cache->cached('modinfo'.$course->id)) { + if (!$this->cache->compare('modinfo'.$course->id, $course->modinfo)) { $this->cache->{'modinfo'.$course->id} = get_fast_modinfo($course); } $modinfo = $this->cache->{'modinfo'.$course->id}; @@ -3073,6 +3073,27 @@ class navigation_cache { } return true; } + /** + * Compare something to it's equivilant in the cache + * + * @param string $key + * @param mixed $value + * @param bool $serialise Whether to serialise the value before comparison + * this should only be set to false if the value is already + * serialised + * @return bool If the value is the same false if it is not set or doesn't match + */ + public function compare($key, $value, $serialise=true) { + if ($this->cached($key)) { + if ($serialise) { + $value = serialize($value); + } + if ($this->session[$key][self::CACHEVALUE] === $value) { + return true; + } + } + return false; + } /** * Whipes the entire cache, good to force regeneration */ -- 2.39.5