diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/GeonamesPlugin.php | 87 | ||||
-rw-r--r-- | plugins/Mapstraction/MapstractionPlugin.php | 4 | ||||
-rw-r--r-- | plugins/Mapstraction/usermap.js | 21 | ||||
-rw-r--r-- | plugins/Realtime/RealtimePlugin.php | 9 | ||||
-rw-r--r-- | plugins/Realtime/realtimeupdate.css | 29 | ||||
-rw-r--r-- | plugins/Realtime/realtimeupdate.js | 20 |
6 files changed, 133 insertions, 37 deletions
diff --git a/plugins/GeonamesPlugin.php b/plugins/GeonamesPlugin.php index 59232c1c5..340a6f0bf 100644 --- a/plugins/GeonamesPlugin.php +++ b/plugins/GeonamesPlugin.php @@ -63,6 +63,14 @@ class GeonamesPlugin extends Plugin function onLocationFromName($name, $language, &$location) { + $loc = $this->getCache(array('name' => $name, + 'language' => $language)); + + if (!empty($loc)) { + $location = $loc; + return false; + } + $client = HTTPClient::start(); // XXX: break down a name by commas, narrow by each @@ -87,6 +95,10 @@ class GeonamesPlugin extends Plugin $location->location_id = $n->geonameId; $location->location_ns = self::LOCATION_NS; + $this->setCache(array('name' => $name, + 'language' => $language), + $location); + // handled, don't continue processing! return false; } @@ -114,6 +126,13 @@ class GeonamesPlugin extends Plugin return true; } + $loc = $this->getCache(array('id' => $id)); + + if (!empty($loc)) { + $location = $loc; + return false; + } + $client = HTTPClient::start(); $str = http_build_query(array('geonameId' => $id, @@ -148,6 +167,9 @@ class GeonamesPlugin extends Plugin $location->lat = $last->lat; $location->lon = $last->lng; $location->names[$language] = implode(', ', array_reverse($parts)); + + $this->setCache(array('id' => $last->geonameId), + $location); } } @@ -173,6 +195,14 @@ class GeonamesPlugin extends Plugin function onLocationFromLatLon($lat, $lon, $language, &$location) { + $loc = $this->getCache(array('lat' => $lat, + 'lon' => $lon)); + + if (!empty($loc)) { + $location = $loc; + return false; + } + $client = HTTPClient::start(); $str = http_build_query(array('lat' => $lat, @@ -211,6 +241,10 @@ class GeonamesPlugin extends Plugin $location->names[$language] = implode(', ', $parts); + $this->setCache(array('lat' => $lat, + 'lon' => $lon), + $location); + // Success! We handled it, so no further processing return false; @@ -242,9 +276,17 @@ class GeonamesPlugin extends Plugin return true; } + $n = $this->getCache(array('id' => $location->location_id, + 'language' => $language)); + + if (!empty($n)) { + $name = $n; + return false; + } + $client = HTTPClient::start(); - $str = http_build_query(array('geonameId' => $id, + $str = http_build_query(array('geonameId' => $location->location_id, 'lang' => $language)); $result = $client->get('http://ws.geonames.org/hierarchyJSON?'.$str); @@ -271,6 +313,9 @@ class GeonamesPlugin extends Plugin if (count($parts)) { $name = implode(', ', array_reverse($parts)); + $this->setCache(array('id' => $location->location_id, + 'language' => $language), + $name); return false; } } @@ -326,4 +371,44 @@ class GeonamesPlugin extends Plugin // it's been filled, so don't process further. return false; } + + function getCache($attrs) + { + $c = common_memcache(); + + if (!$c) { + return null; + } + + return $c->get($this->cacheKey($attrs)); + } + + function setCache($attrs, $loc) + { + $c = common_memcache(); + + if (!$c) { + return null; + } + + $c->set($this->cacheKey($attrs), $loc); + } + + function clearCache($attrs) + { + $c = common_memcache(); + + if (!$c) { + return null; + } + + $c->delete($this->cacheKey($attrs)); + } + + function cacheKey($attrs) + { + return common_cache_key('geonames:'. + implode(',', array_keys($attrs)) . ':'. + common_keyize(implode(',', array_values($attrs)))); + } } diff --git a/plugins/Mapstraction/MapstractionPlugin.php b/plugins/Mapstraction/MapstractionPlugin.php index a0dbf5204..37306a23c 100644 --- a/plugins/Mapstraction/MapstractionPlugin.php +++ b/plugins/Mapstraction/MapstractionPlugin.php @@ -58,12 +58,12 @@ class MapstractionPlugin extends Plugin * * The way to register new actions from a plugin. * - * @param Router &$m reference to router + * @param Router $m reference to router * * @return boolean event handler return */ - function onRouterInitialized(&$m) + function onRouterInitialized($m) { $m->connect(':nickname/all/map', array('action' => 'allmap'), diff --git a/plugins/Mapstraction/usermap.js b/plugins/Mapstraction/usermap.js index 7fb73fa88..e667dd579 100644 --- a/plugins/Mapstraction/usermap.js +++ b/plugins/Mapstraction/usermap.js @@ -1,17 +1,17 @@ $(document).ready(function() { - notices = []; + var notices = []; $(".notice").each(function(){ - notice = getNoticeFromElement($(this)); + var notice = getNoticeFromElement($(this)); if(notice['geo']) notices.push(notice); }); - if($("#map_canvas") && notices.length>0) + if($("#map_canvas").length && notices.length>0) { showMapstraction($("#map_canvas"), notices); } - $('a.geo').click(function(){ - noticeElement = $(this).closest(".notice"); + $('.geo').click(function(){ + var noticeElement = $(this).closest(".notice"); notice = getNoticeFromElement(noticeElement); $.fn.jOverlay.options = { @@ -23,7 +23,7 @@ $(document).ready(function() { autoHide : true, css : {'max-width':'542px', 'top':'5%', 'left':'32.5%'} }; - html="<div id='map_canvas_popup' class='gray smallmap' style='width: 542px; height: 500px' />"; + var html="<div id='map_canvas_popup' class='gray smallmap' style='width: 542px; height: 500px' />"; html+="<button class='close'>×</button>"; html+=$("<div/>").append($(this).clone()).html(); $().jOverlay({ "html": html }); @@ -47,11 +47,12 @@ function getMicroformatValue(element) function getNoticeFromElement(noticeElement) { - notice = {}; - if(noticeElement.find(".latitude").length){ + var notice = {}; + if(noticeElement.find(".geo").length){ + var latlon = noticeElement.find(".geo").attr('title').split(";"); notice['geo']={'coordinates': [ - parseFloat(getMicroformatValue(noticeElement.find(".latitude"))), - parseFloat(getMicroformatValue(noticeElement.find(".longitude")))] }; + parseFloat(latlon[0]), + parseFloat(latlon[1])] }; } notice['user']={ 'profile_image_url': noticeElement.find("img.avatar").attr('src'), diff --git a/plugins/Realtime/RealtimePlugin.php b/plugins/Realtime/RealtimePlugin.php index c5fb6de03..cbfa6bae0 100644 --- a/plugins/Realtime/RealtimePlugin.php +++ b/plugins/Realtime/RealtimePlugin.php @@ -139,8 +139,8 @@ class RealtimePlugin extends Plugin // Add to the public timeline - if ($notice->is_local || - ($notice->is_local == 0 && !common_config('public', 'localonly'))) { + if ($notice->is_local == Notice::LOCAL_PUBLIC || + ($notice->is_local == Notice::REMOTE_OMB && !common_config('public', 'localonly'))) { $paths[] = array('public'); } @@ -220,8 +220,9 @@ class RealtimePlugin extends Plugin $action->elementStart('body', (common_current_user()) ? array('id' => $action->trimmed('action'), - 'class' => 'user_in') - : array('id' => $action->trimmed('action'))); + 'class' => 'user_in realtime-popup') + : array('id' => $action->trimmed('action'), + 'class'=> 'realtime-popup')); // XXX hack to deal with JS that tries to get the // root url from page output diff --git a/plugins/Realtime/realtimeupdate.css b/plugins/Realtime/realtimeupdate.css index 0ab5dd32b..a5728b83d 100644 --- a/plugins/Realtime/realtimeupdate.css +++ b/plugins/Realtime/realtimeupdate.css @@ -1,3 +1,32 @@ +.realtime-popup address { +display:none; +} + +.realtime-popup #content { +width:93.5%; +} + +.realtime-popup #form_notice { +margin:18px 0 18px 1.795%; +width:93%; +max-width:451px; +} + +.realtime-popup #form_notice label[for=notice_data-text], +.realtime-popup h1 { +display:none; +} + +.realtime-popup #form_notice label[for=notice_data-attach], +.realtime-popup #form_notice #notice_data-attach { +top:0; +} + +.realtime-popup #form_notice #notice_data-attach { +left:auto; +right:0; +} + #notices_primary { position:relative; } diff --git a/plugins/Realtime/realtimeupdate.js b/plugins/Realtime/realtimeupdate.js index a2c4da113..b3c41456e 100644 --- a/plugins/Realtime/realtimeupdate.js +++ b/plugins/Realtime/realtimeupdate.js @@ -276,26 +276,6 @@ RealtimeUpdate = { initPopupWindow: function() { - $('address').hide(); - $('#content').css({'width':'93.5%'}); - - $('#form_notice').css({ - 'margin':'18px 0 18px 1.795%', - 'width':'93%', - 'max-width':'451px' - }); - - $('#form_notice label[for=notice_data-text], h1').css({'display': 'none'}); - - $('.notices li:first-child').css({'border-top-color':'transparent'}); - - $('#form_notice label[for="notice_data-attach"], #form_notice #notice_data-attach').css({'top':'0'}); - - $('#form_notice #notice_data-attach').css({ - 'left':'auto', - 'right':'0' - }); - $('.notices .entry-title a, .notices .entry-content a').bind('click', function() { window.open(this.href, ''); |