Committer: afedorov
LJSUP-10900: Implement MessagePack protocol driver to access to Relation Service.U trunk/cgi-bin/LJ/RelationService/MysqlAPI.pm U trunk/cgi-bin/LJ/RelationService.pm U trunk/cgi-bin/ljrelation.pl
Modified: trunk/cgi-bin/LJ/RelationService/MysqlAPI.pm =================================================================== --- trunk/cgi-bin/LJ/RelationService/MysqlAPI.pm 2012-04-11 13:24:58 UTC (rev 21697) +++ trunk/cgi-bin/LJ/RelationService/MysqlAPI.pm 2012-04-11 13:44:06 UTC (rev 21698) @@ -767,4 +767,31 @@ return $LJ::REQ_CACHE_REL{$key} = $dbval; } +sub get_groupmask { + my $class = shift; + my $u = shift; + my $friend = shift; + my %opts = @_; + + return 0 unless $u && $friend; + + my $jid = LJ::want_userid($u); + my $fid = LJ::want_userid($friend); + return 0 unless $jid && $fid; + + my $memkey = [$jid,"frgmask:$jid:$fid"]; + my $mask = LJ::MemCache::get($memkey); + unless (defined $mask) { + my $dbw = LJ::get_db_writer(); + die "No database reader available" unless $dbw; + + $mask = $dbw->selectrow_array("SELECT groupmask FROM friends ". + "WHERE userid=? AND friendid=?", + undef, $jid, $fid); + LJ::MemCache::set($memkey, $mask+0, time()+60*15); + } + + return $mask+0; # force it to a numeric scalar +} + 1; Modified: trunk/cgi-bin/LJ/RelationService.pm =================================================================== --- trunk/cgi-bin/LJ/RelationService.pm 2012-04-11 13:24:58 UTC (rev 21697) +++ trunk/cgi-bin/LJ/RelationService.pm 2012-04-11 13:44:06 UTC (rev 21698) @@ -185,4 +185,29 @@ return $interface->is_relation_to($u, $friend, $type, %opts); } +sub get_groupmask { + my $class = shift; + my $u = shift; + my $friend = shift; + my %opts = @_; + + my $type = $opts{type} || 'F'; + + $u = LJ::want_user($u); + $friend = LJ::want_user($friend); + + return 0 unless $u && $friend && $type; + + if ($class->_load_alt_api('read', $type)) { + my $alt = $class->alt_api($u); + if ($alt) { + $alt->get_groupmask($u, $friend, $type, %opts); + } + } + + my $interface = $class->relation_api($u); + return $interface->get_groupmask($u, $friend, %opts); +} + + 1; Modified: trunk/cgi-bin/ljrelation.pl =================================================================== --- trunk/cgi-bin/ljrelation.pl 2012-04-11 13:24:58 UTC (rev 21697) +++ trunk/cgi-bin/ljrelation.pl 2012-04-11 13:44:06 UTC (rev 21698) @@ -69,27 +69,10 @@ sub get_groupmask { - # TAG:FR:ljlib:get_groupmask my ($journal, $remote) = @_; return 0 unless $journal && $remote; - my $jid = LJ::want_userid($journal); - my $fid = LJ::want_userid($remote); - return 0 unless $jid && $fid; - - my $memkey = [$jid,"frgmask:$jid:$fid"]; - my $mask = LJ::MemCache::get($memkey); - unless (defined $mask) { - my $dbw = LJ::get_db_writer(); - die "No database reader available" unless $dbw; - - $mask = $dbw->selectrow_array("SELECT groupmask FROM friends ". - "WHERE userid=? AND friendid=?", - undef, $jid, $fid); - LJ::MemCache::set($memkey, $mask+0, time()+60*15); - } - - return $mask+0; # force it to a numeric scalar + return LJ::RelationService->get_groupmask($journal, $remote); }