afuna: Cat under a blanket. Text: "Cats are just little people with Fur and Fangs" (Default)
afuna ([personal profile] afuna) wrote in [site community profile] changelog2009-04-05 02:01 am

[dw-free] When importing already-OpenID comments, indicate what service they were imported from

[commit: http://hg.dwscoalition.org/dw-free/rev/2276c707d94f]

http://bugs.dwscoalition.org/show_bug.cgi?id=315

Indicate which service already-OpenID comments were imported from.

Patch by [personal profile] exor674.

Files modified:
  • bin/upgrading/proplists.dat
  • bin/upgrading/s2layers/core2.s2
  • cgi-bin/DW/Worker/ContentImporter/LiveJournal/Comments.pm
  • cgi-bin/DW/Worker/ContentImporter/Local/Comments.pm
  • cgi-bin/LJ/S2/EntryPage.pm
  • htdocs/talkread.bml
  • htdocs/talkread.bml.text
--------------------------------------------------------------------------------
diff -r e410de8a0dd0 -r 2276c707d94f bin/upgrading/proplists.dat
--- a/bin/upgrading/proplists.dat	Sat Apr 04 07:50:56 2009 +0000
+++ b/bin/upgrading/proplists.dat	Sun Apr 05 01:59:49 2009 +0000
@@ -1195,8 +1195,13 @@ talkproplist.guest_url:
 
 talkproplist.import_source:
   datatype: char
-  des: Where this entry was imported from
+  des: Where this comment was imported from
   prettyname: Import source
+
+talkproplist.imported_from:
+  datatype: char
+  des: The hostname of the site where this comment was imported from.
+  prettyname: Imported from
 
 talkproplist.opt_preformatted:
   datatype: bool
diff -r e410de8a0dd0 -r 2276c707d94f bin/upgrading/s2layers/core2.s2
--- a/bin/upgrading/s2layers/core2.s2	Sat Apr 04 07:50:56 2009 +0000
+++ b/bin/upgrading/s2layers/core2.s2	Sun Apr 05 01:59:49 2009 +0000
@@ -1957,6 +1957,13 @@ property string text_poster_anonymous {
 }
 set text_poster_anonymous = "(Anonymous)";
 
+property string text_openid_from {
+  des = "Text to indicate which site this OpenID account originally posted a comment on";
+  example = "from";
+  noui = 1;
+}
+set text_openid_from = "from";
+
 property string text_reply_back {
     des = "Text to link back to the single entry view from the read comments page";
     example = "Read Comments";
@@ -3161,6 +3168,8 @@ function Page::print_entry_poster(EntryL
 # For any given comment, print the commentor's name (local, anonymous, or openid)
 function Comment::print_poster() {
     var string poster = defined $this.poster ? $this.poster->as_string() : "<span class=\"anonymous\">$*text_poster_anonymous</span>";
+    if ($this.metadata{"imported_from"}) { $poster = "$poster ($*text_openid_from " + $this.metadata{"imported_from"} + ")"; }
+
     print safe "<span class=\"poster comment-poster\">$*text_comment_from $poster</span>\n";
 }
 
diff -r e410de8a0dd0 -r 2276c707d94f cgi-bin/DW/Worker/ContentImporter/LiveJournal/Comments.pm
--- a/cgi-bin/DW/Worker/ContentImporter/LiveJournal/Comments.pm	Sat Apr 04 07:50:56 2009 +0000
+++ b/cgi-bin/DW/Worker/ContentImporter/LiveJournal/Comments.pm	Sun Apr 05 01:59:49 2009 +0000
@@ -88,7 +88,7 @@ sub try_work {
             if $url =~ m!/(\d+)\.html$!;
         $jitemid_map->{$jitemid} = $entry_map->{$url};
     }
-    
+
     # this will take a talk_map (old URL -> new jtalkid) and convert it to a jtalkid map (old jtalkid -> new jtalkid)
     my $talk_map = DW::Worker::ContentImporter::Local::Comments->get_comment_map( $u ) || {};
     $log->( 'Loaded comment map with %d entries.', scalar( keys %$talk_map ) );
@@ -102,9 +102,9 @@ sub try_work {
     }
 
     # parameters for below
-    my ( %meta, @userids, $identity_map );
+    my ( %meta, @userids, $identity_map, $was_external_user );
     my ( $maxid, $server_max_id, $server_next_id, $lasttag ) = ( 0, 0, 1, '' );
-    
+
     # setup our parsing function
     my $meta_handler = sub {
         # this sub actually processes incoming meta information
@@ -126,6 +126,8 @@ sub try_work {
 
             my ( $local_oid, $local_fid ) = $class->get_remapped_userids( $data, $temp{user} );
             $identity_map->{$temp{id}} = $local_oid;
+            $was_external_user->{$temp{id}} = 1
+                if $temp{user} =~ m/^ext_/; # If the remote username starts with ext_ flag it as external
 
             $log->( 'Mapped remote %s(%d) to local userid %d.', $temp{user}, $temp{id}, $local_oid );
         }
@@ -145,7 +147,7 @@ sub try_work {
         $server_max_id = $_[1] + 0 if $lasttag eq 'maxid';
         $server_next_id = $_[1] + 0 if $lasttag eq 'nextid';
     };
-    
+
     # hit up the server for metadata
     while ( defined $server_next_id && $server_next_id =~ /^\d+$/ ) {
         $log->( 'Fetching metadata; max_id = %d, next_id = %d.', $server_max_id || 0, $server_next_id || 0 );
@@ -155,9 +157,9 @@ sub try_work {
         );
         return $temp_fail->( 'Error fetching comment metadata from server.' )
             unless $content;
-    
+
         $server_next_id = undef;
-    
+
         # now we want to XML parse this
         my $parser = new XML::Parser(
             Handlers => {
@@ -201,7 +203,7 @@ sub try_work {
         # that may or may not be in the data stream, and we won't know until we've already
         # gotten some data
     };
-    
+
     # start looping to fetch all of the comment bodies
     while ( $lastid < $server_max_id ) {
         $log->( 'Fetching bodydata; last_id = %d, max_id = %d.', $lastid || 0, $server_max_id || 0 );
@@ -221,13 +223,13 @@ sub try_work {
             }
         );
         $parser->parse( $content );
-    
+
         # the exporter should always return the maximum number of items, so loop again.  of course,
         # this will fail nicely as soon as some site we're importing from reduces the max items
         # they return due to load.  http://community.livejournal.com/changelog/5907095.html
         $lastid += $COMMENTS_FETCH_BODY;
     }
-    
+
     # now iterate over each comment and build the nearly final structure
     foreach my $comment ( values %meta ) {
 
@@ -240,16 +242,19 @@ sub try_work {
             next;
         }
 
+        $comment->{source} = $data->{hostname}
+            if $was_external_user->{$comment->{posterid}};
+
         # basic mappings
         $comment->{posterid} = $identity_map->{$comment->{posterid}};
         $comment->{jitemid} = $jitemid_map->{$comment->{jitemid}};
         $comment->{orig_id} = $comment->{id};
-    
+
         # unresolved comments means we haven't got the parent in the database
         # yet so we can't post this one
         $comment->{unresolved} = 1
             if $comment->{parentid};
-    
+
         # the reverse of unresolved, tell the parent it has visible children
         $meta{$comment->{parentid}}->{has_children} = 1
             if $comment->{parentid} && $comment->{state} ne 'D';
@@ -265,7 +270,7 @@ sub try_work {
         $comment->{body} = encode_utf8( $comment->{body} );
         $comment->{subject} = encode_utf8( $comment->{subject} );
     }
-    
+
     # variable setup for the database work
     my @to_import = sort { ( $a->{id}+0 ) <=> ( $b->{id}+0 ) } values %meta;
     my $had_unresolved = 1;
@@ -342,7 +347,7 @@ sub try_work {
             return $fail->( 'Found unresolvable comment chain.' );
         }
     }
-    
+
     return $ok->();
 }
 
diff -r e410de8a0dd0 -r 2276c707d94f cgi-bin/DW/Worker/ContentImporter/Local/Comments.pm
--- a/cgi-bin/DW/Worker/ContentImporter/Local/Comments.pm	Sat Apr 04 07:50:56 2009 +0000
+++ b/cgi-bin/DW/Worker/ContentImporter/Local/Comments.pm	Sun Apr 05 01:59:49 2009 +0000
@@ -76,6 +76,7 @@ sub insert_comment {
     $errref ||= '';
 
     # load the data we need to make this comment
+    # FIXME: What is the point of this?
     use Data::Dumper;
     warn Dumper( $cmt ) unless $cmt->{jitemid};
 
@@ -103,6 +104,7 @@ sub insert_comment {
 
         props => {
             import_source => $source,
+            imported_from => $cmt->{source},
         },
 
         no_urls => 1,
diff -r e410de8a0dd0 -r 2276c707d94f cgi-bin/LJ/S2/EntryPage.pm
--- a/cgi-bin/LJ/S2/EntryPage.pm	Sat Apr 04 07:50:56 2009 +0000
+++ b/cgi-bin/LJ/S2/EntryPage.pm	Sun Apr 05 01:59:49 2009 +0000
@@ -277,6 +277,9 @@ sub EntryPage
                  ($remote->{'userid'} == $entry->posterid ||
                   LJ::can_manage($remote, $u) || $viewall));
 
+            $s2com->{metadata}->{imported_from} = $com->{props}->{imported_from}
+                if $com->{props}->{imported_from};
+
             push @$destlist, $s2com;
 
             $self->($self, $s2com->{'replies'}, $com->{'children'}, $depth+1);
diff -r e410de8a0dd0 -r 2276c707d94f htdocs/talkread.bml
--- a/htdocs/talkread.bml	Sat Apr 04 07:50:56 2009 +0000
+++ b/htdocs/talkread.bml	Sun Apr 05 01:59:49 2009 +0000
@@ -555,6 +555,7 @@ my $old_url = 0;
                 my $cleansubject = LJ::ehtml($post->{'subject'});
                 $ret .= "<span class='commentsubject'><b>$cleansubject</b></span> $icon";
                 $ret .= "<br />$user\n";
+                $ret .= " " . BML::ml( '.from_external', {site=>$post->{props}->{imported_from}} ) if $post->{props}->{imported_from};
                 $ret .= "<br /><span class='datepost'>$datepost</span>\n";
                 if ($post->{'props'}->{'poster_ip'} && $remote &&
                     ($remote->{'user'} eq $up->{'user'} ||
diff -r e410de8a0dd0 -r 2276c707d94f htdocs/talkread.bml.text
--- a/htdocs/talkread.bml.text	Sat Apr 04 07:50:56 2009 +0000
+++ b/htdocs/talkread.bml.text	Sun Apr 05 01:59:49 2009 +0000
@@ -12,6 +12,8 @@
 .deleteduser=<i>(Deleted user: [[username]])</i>
 
 .edittime=Edited at [[edittime]]
+
+.from_external=(from [[site]])
 
 .fromip=(from [[ip]])
 
--------------------------------------------------------------------------------

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org