[dw-free] remove pingback skeleton
[commit: http://hg.dwscoalition.org/dw-free/rev/40c8b868936d]
http://bugs.dwscoalition.org/show_bug.cgi?id=2060
Remove the nonfunctional PingBack code we inherited from LJ.
Patch by
denise.
Files modified:
http://bugs.dwscoalition.org/show_bug.cgi?id=2060
Remove the nonfunctional PingBack code we inherited from LJ.
Patch by
![[staff profile]](https://www.dreamwidth.org/img/silk/identity/user_staff.png)
Files modified:
- bin/upgrading/en.dat
- bin/upgrading/proplists.dat
- bin/worker/notify_pingback
- cgi-bin/LJ/Hooks/PingBack.pm
- cgi-bin/LJ/PingBack.pm
- cgi-bin/TheSchwartz/Worker/NotifyPingbackServer.pm
- t/00-compile.t
-------------------------------------------------------------------------------- diff -r 27534a10aa6a -r 40c8b868936d bin/upgrading/en.dat --- a/bin/upgrading/en.dat Tue Nov 10 04:01:14 2009 +0000 +++ b/bin/upgrading/en.dat Tue Nov 10 04:08:22 2009 +0000 @@ -2287,20 +2287,6 @@ optional=(optional) password=Password -pingback.ljping.comment.text=User <lj user="[[poster]]"> referenced to your post from <a href="[[sourceURI]]">[[subject]]</a> saying: [...] [[context]] [...] - -pingback.option.disabled=Disabled - -pingback.option.journal_default=Journal default - -pingback.option.lj_only=LJ only - -pingback.option.open=Open - -pingback.public.comment.text=Pingback from <a href="[[sourceURI]]">[[title]]</a>: [...] [[context]] [...] - -pingback.sourceuri.default_title=No title - poll.changevote=Change Your Vote poll.dberror=Database error: [[errmsg]] diff -r 27534a10aa6a -r 40c8b868936d bin/upgrading/proplists.dat --- a/bin/upgrading/proplists.dat Tue Nov 10 04:01:14 2009 +0000 +++ b/bin/upgrading/proplists.dat Tue Nov 10 04:08:22 2009 +0000 @@ -1364,18 +1364,3 @@ pollproplist2.unique: pollproplist2.createdate: des: The voter must have created their account by the date specified (Pacific time) in order to vote. Must be in format YYYY-MM-DD, otherwise there will be no restriction. - -userproplist.pingback: - cldversion: 0 - datatype: char - des: (O)pen - all links from post should be processed with PingBack. (L)iveJournal - only leading to/from livejournal.com. (D)isabled - pingbacks disabled. - indexed: 0 - multihomed: 0 - prettyname: PingBack options - -logproplist.pingback: - datatype: char - des: (J)ournal default, (O)pen - all links from post should be processed with PingBack. (L)iveJournal - only leading to/from livejournal.com. (D)isabled - pingbacks disabled. - prettyname: PingBack options - sortorder: 105 - ownership: user diff -r 27534a10aa6a -r 40c8b868936d bin/worker/notify_pingback --- a/bin/worker/notify_pingback Tue Nov 10 04:01:14 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -#!/usr/bin/perl -use strict; -use lib "$ENV{LJHOME}/cgi-bin"; -require 'ljlib.pl'; -use LJ::Worker::TheSchwartz; -use TheSchwartz::Worker::NotifyPingbackServer; - -schwartz_decl('TheSchwartz::Worker::NotifyPingbackServer'); -schwartz_work(); - diff -r 27534a10aa6a -r 40c8b868936d cgi-bin/LJ/Hooks/PingBack.pm --- a/cgi-bin/LJ/Hooks/PingBack.pm Tue Nov 10 04:01:14 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,170 +0,0 @@ -package LJ::Hooks::PingBack; -use strict; -use LJ::PingBack; - -sub has_pingback { - my $u = shift; - return 0 unless LJ::is_enabled('pingback'); - return 0 unless $u->is_in_beta('pingback'); - return 1; -} - - -# -LJ::register_hook("add_extra_options_to_manage_comments", sub { - my $u = shift; - - return unless has_pingback($u); - - # PingBack options - my $ret = ''; - $ret .= "<tr><td class='field_name'>" . BML::ml('.pingback') . "</td>\n<td>"; - $ret .= BML::ml('.pingback.process') . " "; - $ret .= LJ::html_select({ 'name' => 'pingback', 'selected' => $u->{'pingback'} }, - "O" => BML::ml(".pingback.option.open"), - "L" => BML::ml(".pingback.option.lj_only"), - "D" => BML::ml(".pingback.option.disabled"), - ); - $ret .= "</td></tr>\n"; - return $ret; - -}); - -# -LJ::register_hook("process_extra_options_for_manage_comments", sub { - my $u = shift; - my $POST = shift; - - return unless has_pingback($u); - - $POST->{'pingback'} = "D" unless $POST->{'pingback'} =~ /^[OLD]$/; - return 'pingback'; - -}); - - - -# Draw widget with event's pingback option selector -LJ::register_hook("add_extra_entryform_fields", sub { - my $args = shift; - my $tabindex = $args->{tabindex}; - my $opts = $args->{opts}; - - return if $opts->{remote} and - not has_pingback($opts->{remote}); - - # PINGBACK widget - return " - <p class='pkg'> - <span class='inputgroup-right'> - <label for='prop_pingback' class='left options'>" . BML::ml('entryform.pingback') . "</label> - " . LJ::html_select({ 'name' => 'prop_pingback', - 'id' => 'prop_pingback', - 'class' => 'select', - 'selected' => $opts->{'prop_pingback'}, - 'tabindex' => $tabindex->(), - }, - { value => "J", text => BML::ml("pingback.option.journal_default") }, - { value => "O", text => BML::ml("pingback.option.open") }, - { value => "L", text => BML::ml("pingback.option.lj_only") }, - { value => "D", text => BML::ml("pingback.option.disabled") }, - ) . " - " . LJ::help_icon_html("pingback", "", " ") . " - </span> - </p> - "; -}); - -# Fetch pingback's option from POST data -LJ::register_hook("decode_entry_form", sub { - my ($POST, $req) = @_; - $req->{prop_pingback} = $POST->{prop_pingback}; - -}); - -# Process event's pingback option for new entry -LJ::register_hook("postpost", sub { - my $args = shift; - my $security = $args->{security}; - my $entry = $args->{entry}; - my $journal = $args->{journal}; - - return unless has_pingback($journal); - - # check security - return if $security ne 'public'; - - # define pingback prop value - my $prop_pingback = $args->{props}->{pingback}; - if ($prop_pingback eq 'J'){ - # use journal's default - $args->{entry}->set_prop('pingback' => undef); # do not populate db with "(J)ournal default" value. - $prop_pingback = $journal->prop('pingback'); - } - - return if $prop_pingback eq 'D' # pingback is strictly disabled - or not $prop_pingback; # or not enabled. - - # - LJ::PingBack->notify( - uri => $entry->url, - text => $args->{event}, - mode => $prop_pingback, - ); - -}); - -# Process event's pingback option for updated entry -LJ::register_hook("editpost", sub { - my $entry = shift; - - return unless has_pingback($entry->journal); - - # check security - return if $entry->security ne 'public'; - - # define pingback prop value - my $prop_pingback = $entry->prop("pingback"); - if ($prop_pingback eq 'J'){ - # use journal's default - $entry->set_prop('pingback' => undef); # do not populate db with "(J)ournal default" value. - $prop_pingback = $entry->journal->prop('pingback'); - } - - return if $prop_pingback eq 'D' # pingback is strictly disabled - or not $prop_pingback; # or not enabled. - - - # - LJ::PingBack->notify( - uri => $entry->url, - text => $entry->event_raw, - mode => $entry->prop('pingback'), - ); - -}); - - -# -LJ::register_hook("after_journal_content_created", sub { - my $opts = shift; - my $html_ref = shift; - - my $entry = $opts->{ljentry}; - my $r = $opts->{r}; - - return unless $r; - return unless $entry; - return unless $r->notes->{view} eq 'entry'; - return unless has_pingback($entry->journal); - - - if (LJ::PingBack->should_entry_recieve_pingback($entry)){ - $r->header_out('X-Pingback', $LJ::PINGBACK->{uri}); - } - - -}); - - -1; diff -r 27534a10aa6a -r 40c8b868936d cgi-bin/LJ/PingBack.pm --- a/cgi-bin/LJ/PingBack.pm Tue Nov 10 04:01:14 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,134 +0,0 @@ -package LJ::PingBack; -use strict; -use LJ::Entry; - -# Add comment to pinged post, if allowed. -# returns comment object in success, -# error string otherwise. -sub ping_post { - my $class = shift; - my %args = @_; - my $targetURI = $args{targetURI}; - my $sourceURI = $args{sourceURI}; - my $context = $args{context}; - my $title = $args{title}; - - # - my $target_entry = LJ::Entry->new_from_url($targetURI); - unless ($target_entry){ - warn "Unknown entry"; - return "Unknown entry"; - } - - # empty object means, that sourceURI is not LJ.com's page. - # it's an usual case. - my $source_entry = LJ::Entry->new_from_url($sourceURI); - - # can we add pingback comment to post? - return "pingbacks are forbidden for the target." - unless $class->should_entry_recieve_pingback($target_entry, $source_entry); - - # bot: pingback_bot - # pass: test4test - my $poster_u = LJ::load_user($LJ::PINGBACK->{comments_bot_username}); - unless ($poster_u){ - warn "Pingback bot user does not exists"; - return "Pingback bot user does not exists"; - } - - - # - my $subject = $source_entry - ? ($source_entry->subject_raw || BML::ml("pingback.sourceURI.default_title")) - : ($title || BML::ml("pingback.sourceURI.default_title")); - - my $comment = LJ::Comment->create( - journal => $target_entry->journal, - ditemid => $target_entry->ditemid, - poster => $poster_u, - - body => ($source_entry - ? BML::ml("pingback.ljping.comment.text", - { context => $context, - subject => $subject, - sourceURI => $sourceURI, - poster => $source_entry->poster->username, - }) - : BML::ml("pingback.public.comment.text", - { sourceURI => $sourceURI, - title => $subject, - context => $context - }) - ), - subject => $subject, - - ); - - return $comment; - -} - -sub should_entry_recieve_pingback { - my $class = shift; - my $target_entry = shift; - my $source_entry = shift; - - return 0 unless $target_entry->journal->is_in_beta("pingback"); - return 0 if $target_entry->is_suspended; - - return 0 unless $target_entry->journal->get_cap('pingback'); - - # not RO? - return 0 if $target_entry->journal->readonly; # Check "is_readonly". - - # are comments allowed? - return 0 if $target_entry->prop('opt_nocomments'); - - # did user allow to add pingbacks? - # journal's default. We do not store "J" value in DB. - my $entry_pb_prop = $target_entry->prop("pingback") || 'J'; - return 0 if $entry_pb_prop eq 'D'; # disabled - - return 0 if $entry_pb_prop eq 'L' # author allowed PingBacks only from LJ - and not $source_entry; # and sourceURI is not LJ.com's post - - if ($entry_pb_prop eq 'J'){ - my $journal_pb_prop = $target_entry->journal->prop("pingback") || 'D'; - return 0 if $journal_pb_prop eq 'D' # pingback disabled - or ($journal_pb_prop eq 'L' # or allowed from LJ only - and not $source_entry # but sourceURI is not LJ page - ); - } - - return 1; - -} - - -# Send notification to PingBack server -sub notify { - my $class = shift; - my %args = @_; - - my $uri = $args{uri}; - my $text = $args{text}; - my $mode = $args{mode}; - - return unless $mode =~ m!^[LO]$!; # (L)ivejournal only, (O)pen. - my $sclient = LJ::theschwartz(); - unless ($sclient){ - warn "LJ::PingBack: Could not get TheSchwartz client"; - return; - } - - # - my $job = TheSchwartz::Job->new( - funcname => "TheSchwartz::Worker::NotifyPingbackServer", - arg => { uri => $uri, text => $text, mode => $mode }, - ); - $sclient->insert($job); - -} - - -1; diff -r 27534a10aa6a -r 40c8b868936d cgi-bin/TheSchwartz/Worker/NotifyPingbackServer.pm --- a/cgi-bin/TheSchwartz/Worker/NotifyPingbackServer.pm Tue Nov 10 04:01:14 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -package TheSchwartz::Worker::NotifyPingbackServer; -use strict; -use base 'TheSchwartz::Worker'; -use LWP::UserAgent qw(); -use HTTP::Request qw(); -use JSON; - - -sub work { - my ($class, $job) = @_; - my $args = $job->arg; - my $client = $job->handle->client; - my $res = eval { - send_ping(uri => $args->{uri}, - text => $args->{text}, - mode => $args->{mode}, - ); - }; - $job->completed if $res; - -} - -sub send_ping { - my %args = @_; - - my $uri = $args{uri}; - my $text = $args{text}; - my $mode = $args{mode}; - - my $pb_server_uri = $LJ::PINGBACK->{uri}; - my $content = JSON::objToJson({ uri => $uri, text => $text, mode => $mode }) . "\r\n"; - - my $headers = HTTP::Headers->new; - $headers->header('Content-Length' => length $content); - - my $req = HTTP::Request->new('POST', $pb_server_uri, $headers, $content ); - my $ua = LWP::UserAgent->new; - my $res = $ua->request($req); - - return 1 if $res->content eq 'OK'; - return 0; - -} - - - - -1; diff -r 27534a10aa6a -r 40c8b868936d t/00-compile.t --- a/t/00-compile.t Tue Nov 10 04:01:14 2009 +0000 +++ b/t/00-compile.t Tue Nov 10 04:08:22 2009 +0000 @@ -26,7 +26,6 @@ my %SKIP = ( 'DW/Hooks/NavStrip.pm' => 'Undefined subroutine &LJ::register_hook', 'DW/Hooks/SiteScheme.pm' => 'Undefined subroutine &LJ::register_hook', - 'LJ/Hooks/PingBack.pm' => 'Undefined subroutine &LJ::register_hook', 'DW/Hooks/SSL.pm' => 'Undefined subroutine &LJ::register_hook', 'DW/Hooks/Display.pm' => 'Undefined subroutine &LJ::register_hook', 'DW/Hooks/Changelog.pm' => 'Undefined subroutine &LJ::register_hook', --------------------------------------------------------------------------------