Index: /branches/release-35/lib/MT/Auth/OpenID.pm
===================================================================
--- /branches/release-35/lib/MT/Auth/OpenID.pm (revision 1823)
+++ /branches/release-35/lib/MT/Auth/OpenID.pm (revision 1914)
@@ -8,5 +8,5 @@
 use strict;
 
-use MT::Util qw( decode_url is_valid_email escape_unicode );
+use MT::Util qw( decode_url is_valid_email escape_unicode ts2epoch );
 use MT::I18N qw( encode_text );
 
@@ -60,4 +60,5 @@
     my ($app, $auth_type) = @_;
     my $q = $app->{query};
+    my $INTERVAL = 60 * 60 * 24 * 7;
 
     $auth_type ||= 'OpenID';
@@ -75,5 +76,40 @@
     } elsif(my $vident = $csr->verified_identity) {
         my $name = $vident->url;
-        my $nick = $class->get_nickname($vident);
+        $cmntr = $app->model('author')->load(
+            {
+                name => $name,
+                type => MT::Author::COMMENTER(),
+                auth_type => $auth_type,
+            }
+        );
+        my $nick;
+        if ( $cmntr ) {
+            if ( ( $cmntr->modified_on
+                && ( ts2epoch($blog, $cmntr->modified_on) > time - $INTERVAL ) )
+              || ( $cmntr->created_on
+                && ( ts2epoch($blog, $cmntr->created_on) > time - $INTERVAL ) ) )
+            {
+                $nick = $cmntr->nickname;
+            }
+            else {
+                $nick = $class->get_nickname($vident);
+                $cmntr->nickname($nick);
+                $cmntr->save or return 0;
+            }
+        }
+        else {
+            $nick = $class->get_nickname($vident);
+            $cmntr = $app->_make_commenter(
+                email       => q(),
+                nickname    => $nick,
+                name        => $name,
+                url         => $vident->url,
+                auth_type   => $auth_type,
+                external_id => _url_hash($vident->url),
+            );
+        }
+        return 0 unless $cmntr;
+
+        $nick = $name unless $nick;
 
         # Signature was valid, so create a session, etc.
@@ -87,12 +123,13 @@
             return 0;
         }
-        $cmntr = $app->_make_commenter(
-            email       => q(),
-            nickname    => $nick,
-            name        => $name,
-            url         => $vident->url,
-            auth_type   => $auth_type,
-            external_id => _url_hash($vident->url),
-        );
+
+        if (my $userpic = $cmntr->userpic) {
+            my @stat = stat($userpic->file_path());
+            my $mtime = $stat[9];
+            if ( $mtime > time - $INTERVAL ) {
+                # newer than 7 days ago, don't download the userpic
+                return $cmntr;
+            }
+        }
 
         if ( my $userpic = $class->get_userpicasset($vident) ) {
