From: Brion Vibber <brion@pobox.com>
Date: Tue, 30 Mar 2010 19:19:25 +0000 (-0700)
Subject: Shared cache key option for Geonames plugin, lets multi-instance sites share their... 
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=f19b95d9b7daa82e73ca2ebf23ca55712de73107;p=quix0rs-gnu-social.git

Shared cache key option for Geonames plugin, lets multi-instance sites share their cached geoname lookups.

Example:
  unset($config['plugins']['default']['Geonames']);
  addPlugin('Geonames', array('cachePrefix' => 'statusnet:shared'));
---

diff --git a/plugins/GeonamesPlugin.php b/plugins/GeonamesPlugin.php
index 589462ed99..f018e26943 100644
--- a/plugins/GeonamesPlugin.php
+++ b/plugins/GeonamesPlugin.php
@@ -55,6 +55,8 @@ class GeonamesPlugin extends Plugin
     public $username = null;
     public $token    = null;
     public $expiry   = 7776000; // 90-day expiry
+    public $cachePrefix = null; // Optional shared memcache prefix override
+                                // to share lookups between local instances.
 
     /**
      * convert a name into a Location object
@@ -408,9 +410,14 @@ class GeonamesPlugin extends Plugin
 
     function cacheKey($attrs)
     {
-        return common_cache_key('geonames:'.
-                                implode(',', array_keys($attrs)) . ':'.
-                                common_keyize(implode(',', array_values($attrs))));
+        $key = 'geonames:' .
+               implode(',', array_keys($attrs)) . ':'.
+               common_keyize(implode(',', array_values($attrs)));
+        if ($this->cachePrefix) {
+            return $this->cachePrefix . ':' . $key;
+        } else {
+            return common_cache_key($key);
+        }
     }
 
     function wsUrl($method, $params)