97 lines
2.2 KiB
Perl
97 lines
2.2 KiB
Perl
# This code was forked from the LiveJournal project owned and operated
|
|
# by Live Journal, Inc. The code has been modified and expanded by
|
|
# Dreamwidth Studios, LLC. These files were originally licensed under
|
|
# the terms of the license supplied by Live Journal, Inc, which can
|
|
# currently be found at:
|
|
#
|
|
# http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
|
|
#
|
|
# In accordance with the original license, this code and all its
|
|
# modifications are provided under the GNU General Public License.
|
|
# A copy of that license can be found in the LICENSE file included as
|
|
# part of this distribution.
|
|
|
|
package LJ::NotificationMethod::Inbox;
|
|
|
|
use strict;
|
|
use Carp qw/ croak /;
|
|
use base 'LJ::NotificationMethod';
|
|
use LJ::NotificationInbox;
|
|
|
|
sub can_digest { 1 }
|
|
|
|
# takes a $u, and $journalid
|
|
sub new {
|
|
my $class = shift;
|
|
|
|
croak "no args passed"
|
|
unless @_;
|
|
|
|
my $u = shift;
|
|
croak "invalid user object passed"
|
|
unless LJ::isu($u);
|
|
|
|
my $journalid = shift;
|
|
|
|
my $self = {
|
|
u => $u,
|
|
journalid => $journalid,
|
|
};
|
|
|
|
return bless $self, $class;
|
|
}
|
|
|
|
sub title { BML::ml('notification_method.inbox.title') }
|
|
|
|
sub new_from_subscription {
|
|
my $class = shift;
|
|
my $subscr = shift;
|
|
|
|
return $class->new( $subscr->owner, $subscr->journalid );
|
|
}
|
|
|
|
sub u {
|
|
my $self = shift;
|
|
croak "'u' is an object method"
|
|
unless ref $self eq __PACKAGE__;
|
|
|
|
if ( my $u = shift ) {
|
|
croak "invalid 'u' passed to setter"
|
|
unless LJ::isu($u);
|
|
|
|
$self->{u} = $u;
|
|
}
|
|
croak "superfluous extra parameters"
|
|
if @_;
|
|
|
|
return $self->{u};
|
|
}
|
|
|
|
# notify a single event
|
|
sub notify {
|
|
my $self = shift;
|
|
croak "'notify' is an object method"
|
|
unless ref $self eq __PACKAGE__;
|
|
|
|
my $u = $self->u;
|
|
|
|
my @events = @_;
|
|
croak "'notify' requires one or more events"
|
|
unless @events;
|
|
|
|
my $q = LJ::NotificationInbox->new($u)
|
|
or die "Could not get notification queue for user $u->{user}";
|
|
|
|
foreach my $ev (@events) {
|
|
croak "invalid event passed" unless ref $ev;
|
|
|
|
$q->enqueue( event => $ev );
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
sub configured { 1 }
|
|
sub configured_for_user { 1 } # always configured for all users
|
|
|
|
1;
|