Changeset 1914

Show
Ignore:
Timestamp:
04/15/08 08:50:50 (6 months ago)
Author:
fumiakiy
Message:

Condition when to download FOAF/Atom and userpic image from OpenID OP by date. This should speed up logging in of OpenID commenter by 1 - 2 seconds. BugId:67909

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/release-35/lib/MT/Auth/OpenID.pm

    r1823 r1914  
    88use strict; 
    99 
    10 use MT::Util qw( decode_url is_valid_email escape_unicode ); 
     10use MT::Util qw( decode_url is_valid_email escape_unicode ts2epoch ); 
    1111use MT::I18N qw( encode_text ); 
    1212 
     
    6060    my ($app, $auth_type) = @_; 
    6161    my $q = $app->{query}; 
     62    my $INTERVAL = 60 * 60 * 24 * 7; 
    6263 
    6364    $auth_type ||= 'OpenID'; 
     
    7576    } elsif(my $vident = $csr->verified_identity) { 
    7677        my $name = $vident->url; 
    77         my $nick = $class->get_nickname($vident); 
     78        $cmntr = $app->model('author')->load( 
     79            { 
     80                name => $name, 
     81                type => MT::Author::COMMENTER(), 
     82                auth_type => $auth_type, 
     83            } 
     84        ); 
     85        my $nick; 
     86        if ( $cmntr ) { 
     87            if ( ( $cmntr->modified_on 
     88                && ( ts2epoch($blog, $cmntr->modified_on) > time - $INTERVAL ) ) 
     89              || ( $cmntr->created_on 
     90                && ( ts2epoch($blog, $cmntr->created_on) > time - $INTERVAL ) ) ) 
     91            { 
     92                $nick = $cmntr->nickname; 
     93            } 
     94            else { 
     95                $nick = $class->get_nickname($vident); 
     96                $cmntr->nickname($nick); 
     97                $cmntr->save or return 0; 
     98            } 
     99        } 
     100        else { 
     101            $nick = $class->get_nickname($vident); 
     102            $cmntr = $app->_make_commenter( 
     103                email       => q(), 
     104                nickname    => $nick, 
     105                name        => $name, 
     106                url         => $vident->url, 
     107                auth_type   => $auth_type, 
     108                external_id => _url_hash($vident->url), 
     109            ); 
     110        } 
     111        return 0 unless $cmntr; 
     112 
     113        $nick = $name unless $nick; 
    78114 
    79115        # Signature was valid, so create a session, etc. 
     
    87123            return 0; 
    88124        } 
    89         $cmntr = $app->_make_commenter( 
    90             email       => q(), 
    91             nickname    => $nick, 
    92             name        => $name, 
    93             url         => $vident->url, 
    94             auth_type   => $auth_type, 
    95             external_id => _url_hash($vident->url), 
    96         ); 
     125 
     126        if (my $userpic = $cmntr->userpic) { 
     127            my @stat = stat($userpic->file_path()); 
     128            my $mtime = $stat[9]; 
     129            if ( $mtime > time - $INTERVAL ) { 
     130                # newer than 7 days ago, don't download the userpic 
     131                return $cmntr; 
     132            } 
     133        } 
    97134 
    98135        if ( my $userpic = $class->get_userpicasset($vident) ) {