Allow first letter data to be invalidated
authorTim Starling <tstarling@wikimedia.org>
Wed, 13 Mar 2013 03:53:20 +0000 (14:53 +1100)
committerTim Starling <tstarling@wikimedia.org>
Wed, 13 Mar 2013 03:53:20 +0000 (14:53 +1100)
Just a class constant for now, but that should suffice to deal with the
current emergency. Proper dependency tracking via the CacheDependency
hierarchy would be pretty cool in the long term.

Change-Id: Ibbe7fa2814434d4869aba20f628bd43269e611fa

includes/Collation.php

index 2734871..a0e1d2d 100644 (file)
@@ -149,6 +149,8 @@ class IdentityCollation extends Collation {
 }
 
 class IcuCollation extends Collation {
+       const FIRST_LETTER_VERSION = 1;
+
        var $primaryCollator, $mainCollator, $locale;
        var $firstLetterData;
 
@@ -347,7 +349,9 @@ class IcuCollation extends Collation {
                $cacheKey = wfMemcKey( 'first-letters', $this->locale );
                $cacheEntry = $cache->get( $cacheKey );
 
-               if ( $cacheEntry ) {
+               if ( $cacheEntry && isset( $cacheEntry['version'] )
+                       && $cacheEntry['version'] == self::FIRST_LETTER_VERSION ) 
+               {
                        $this->firstLetterData = $cacheEntry;
                        return $this->firstLetterData;
                }
@@ -394,7 +398,8 @@ class IcuCollation extends Collation {
                ksort( $letterMap, SORT_STRING );
                $data = array(
                        'chars' => array_values( $letterMap ),
-                       'keys' => array_keys( $letterMap )
+                       'keys' => array_keys( $letterMap ),
+                       'version' => self::FIRST_LETTER_VERSION,
                );
 
                // Reduce memory usage before caching