From 5a357d539902089030ae2e8aa645813c0e8173ec Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 16 Feb 2010 09:58:33 -0500 Subject: change find() to staticGet() to use cache --- plugins/OStatus/classes/Ostatus_profile.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/plugins/OStatus/classes/Ostatus_profile.php b/plugins/OStatus/classes/Ostatus_profile.php index 733d8843b..b750e1883 100644 --- a/plugins/OStatus/classes/Ostatus_profile.php +++ b/plugins/OStatus/classes/Ostatus_profile.php @@ -29,15 +29,15 @@ PuSH subscription flow: generate random verification token save to verify_token sends a sub request to the hub... - + main/push/callback hub sends confirmation back to us via GET We verify the request, then echo back the challenge. On our end, we save the time we subscribed and the lease expiration - + main/push/callback hub sends us updates via POST - + */ class FeedDBException extends FeedSubException @@ -75,7 +75,6 @@ class Ostatus_profile extends Memcached_DataObject public $created; public $lastupdate; - public /*static*/ function staticGet($k, $v=null) { return parent::staticGet(__CLASS__, $k, $v); @@ -107,7 +106,7 @@ class Ostatus_profile extends Memcached_DataObject 'created' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL, 'lastupdate' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME + DB_DATAOBJECT_NOTNULL); } - + static function schemaDef() { return array(new ColumnDef('id', 'integer', @@ -486,7 +485,7 @@ class Ostatus_profile extends Memcached_DataObject } if ($this->salmonuri) { $text = 'update'; // @fixme - $id = 'tag:' . common_config('site', 'server') . + $id = 'tag:' . common_config('site', 'server') . ':' . $verb . ':' . $actor->id . ':' . time(); // @fixme @@ -589,7 +588,7 @@ class Ostatus_profile extends Memcached_DataObject require_once "XML/Feed/Parser.php"; $feed = new XML_Feed_Parser($xml, false, false, true); $munger = new FeedMunger($feed); - + $hits = 0; foreach ($feed as $index => $entry) { // @fixme this might sort in wrong order if we get multiple updates @@ -598,9 +597,10 @@ class Ostatus_profile extends Memcached_DataObject // Double-check for oldies // @fixme this could explode horribly for multiple feeds on a blog. sigh - $dupe = new Notice(); - $dupe->uri = $notice->uri; - if ($dupe->find(true)) { + + $dupe = Notice::staticGet('uri', $notice->uri); + + if (!empty($dupe)) { common_log(LOG_WARNING, __METHOD__ . ": tried to save dupe notice for entry {$notice->uri} of feed {$this->feeduri}"); continue; } -- cgit v1.2.3-54-g00ecf From 813451c9f9aac0690019d936dea2bf9d37ca6c13 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 16 Feb 2010 10:18:23 -0500 Subject: add a couple of FIXME comments --- plugins/OStatus/OStatusPlugin.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/plugins/OStatus/OStatusPlugin.php b/plugins/OStatus/OStatusPlugin.php index 276ca1b3d..3b1329d6c 100644 --- a/plugins/OStatus/OStatusPlugin.php +++ b/plugins/OStatus/OStatusPlugin.php @@ -218,6 +218,9 @@ class OStatusPlugin extends Plugin $count = preg_match_all('/(\w+\.)*\w+@(\w+\.)*\w+(\w+\-\w+)*\.\w+/', $notice->content, $matches); if ($count) { foreach ($matches[0] as $webfinger) { + + // FIXME: look up locally first + // Check to see if we've got an actual webfinger $w = new Webfinger; @@ -238,6 +241,8 @@ class OStatusPlugin extends Plugin continue; } + // FIXME: this needs to go out in a queue handler + $xml = ''; $xml .= $notice->asAtomEntry(); -- cgit v1.2.3-54-g00ecf From a8c2a8261e79dd2047caaa158e7c5609d9835449 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Tue, 16 Feb 2010 11:06:10 -0500 Subject: move some nickname-guessing code to lib/util.php from OpenID --- lib/util.php | 54 +++++++++++++++++++++++++++++++++++- plugins/OpenID/finishopenidlogin.php | 47 ++----------------------------- 2 files changed, 55 insertions(+), 46 deletions(-) diff --git a/lib/util.php b/lib/util.php index 209dc2254..ae812e8cf 100644 --- a/lib/util.php +++ b/lib/util.php @@ -1007,7 +1007,6 @@ function common_enqueue_notice($notice) if (Event::hasHandler('HandleQueuedNotice')) { $transports[] = 'plugin'; } - $xmpp = common_config('xmpp', 'enabled'); @@ -1574,3 +1573,56 @@ function common_client_ip() return array($proxy, $ip); } + +function common_url_to_nickname($url) +{ + static $bad = array('query', 'user', 'password', 'port', 'fragment'); + + $parts = parse_url($url); + + # If any of these parts exist, this won't work + + foreach ($bad as $badpart) { + if (array_key_exists($badpart, $parts)) { + return null; + } + } + + # We just have host and/or path + + # If it's just a host... + if (array_key_exists('host', $parts) && + (!array_key_exists('path', $parts) || strcmp($parts['path'], '/') == 0)) + { + $hostparts = explode('.', $parts['host']); + + # Try to catch common idiom of nickname.service.tld + + if ((count($hostparts) > 2) && + (strlen($hostparts[count($hostparts) - 2]) > 3) && # try to skip .co.uk, .com.au + (strcmp($hostparts[0], 'www') != 0)) + { + return common_nicknamize($hostparts[0]); + } else { + # Do the whole hostname + return common_nicknamize($parts['host']); + } + } else { + if (array_key_exists('path', $parts)) { + # Strip starting, ending slashes + $path = preg_replace('@/$@', '', $parts['path']); + $path = preg_replace('@^/@', '', $path); + if (strpos($path, '/') === false) { + return common_nicknamize($path); + } + } + } + + return null; +} + +function common_nicknamize($str) +{ + $str = preg_replace('/\W/', '', $str); + return strtolower($str); +} diff --git a/plugins/OpenID/finishopenidlogin.php b/plugins/OpenID/finishopenidlogin.php index d25ce696c..438a728d8 100644 --- a/plugins/OpenID/finishopenidlogin.php +++ b/plugins/OpenID/finishopenidlogin.php @@ -438,49 +438,7 @@ class FinishopenidloginAction extends Action function urlToNickname($openid) { - static $bad = array('query', 'user', 'password', 'port', 'fragment'); - - $parts = parse_url($openid); - - # If any of these parts exist, this won't work - - foreach ($bad as $badpart) { - if (array_key_exists($badpart, $parts)) { - return null; - } - } - - # We just have host and/or path - - # If it's just a host... - if (array_key_exists('host', $parts) && - (!array_key_exists('path', $parts) || strcmp($parts['path'], '/') == 0)) - { - $hostparts = explode('.', $parts['host']); - - # Try to catch common idiom of nickname.service.tld - - if ((count($hostparts) > 2) && - (strlen($hostparts[count($hostparts) - 2]) > 3) && # try to skip .co.uk, .com.au - (strcmp($hostparts[0], 'www') != 0)) - { - return $this->nicknamize($hostparts[0]); - } else { - # Do the whole hostname - return $this->nicknamize($parts['host']); - } - } else { - if (array_key_exists('path', $parts)) { - # Strip starting, ending slashes - $path = preg_replace('@/$@', '', $parts['path']); - $path = preg_replace('@^/@', '', $path); - if (strpos($path, '/') === false) { - return $this->nicknamize($path); - } - } - } - - return null; + return common_url_to_nickname($openid); } function xriToNickname($xri) @@ -510,7 +468,6 @@ class FinishopenidloginAction extends Action function nicknamize($str) { - $str = preg_replace('/\W/', '', $str); - return strtolower($str); + return common_nicknamize($str); } } -- cgit v1.2.3-54-g00ecf