# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # # This Source Code Form is "Incompatible With Secondary Licenses", as # defined by the Mozilla Public License, v. 2.0. package Bugzilla::Whine::Schedule; use 5.10.1; use strict; use parent qw(Bugzilla::Object); use Bugzilla::Constants; ############# # Constants # ############# use constant DB_TABLE => 'whine_schedules'; use constant DB_COLUMNS => qw( id eventid run_day run_time run_next mailto mailto_type ); use constant UPDATE_COLUMNS => qw( eventid run_day run_time run_next mailto mailto_type ); use constant NAME_FIELD => 'id'; use constant LIST_ORDER => 'id'; #################### # Simple Accessors # #################### sub eventid { return $_[0]->{'eventid'}; } sub run_day { return $_[0]->{'run_day'}; } sub run_time { return $_[0]->{'run_time'}; } sub mailto_is_group { return $_[0]->{'mailto_type'}; } sub mailto { my $self = shift; return $self->{mailto_object} if exists $self->{mailto_object}; my $id = $self->{'mailto'}; if ($self->mailto_is_group) { $self->{mailto_object} = Bugzilla::Group->new($id); } else { $self->{mailto_object} = Bugzilla::User->new($id); } return $self->{mailto_object}; } sub mailto_users { my $self = shift; return $self->{mailto_users} if exists $self->{mailto_users}; my $object = $self->mailto; if ($self->mailto_is_group) { $self->{mailto_users} = $object->members_non_inherited if $object->is_active; } else { $self->{mailto_users} = $object; } return $self->{mailto_users}; } 1; __END__ =head1 NAME Bugzilla::Whine::Schedule - A schedule object used by L<Bugzilla::Whine>. =head1 SYNOPSIS use Bugzilla::Whine::Schedule; my $schedule = new Bugzilla::Whine::Schedule($schedule_id); my $event_id = $schedule->eventid; my $run_day = $schedule->run_day; my $run_time = $schedule->run_time; my $is_group = $schedule->mailto_is_group; my $object = $schedule->mailto; my $array_ref = $schedule->mailto_users; =head1 DESCRIPTION This module exists to represent a L<Bugzilla::Whine> event schedule. This is an implementation of L<Bugzilla::Object>, and so has all the same methods available as L<Bugzilla::Object>, in addition to what is documented below. =head1 METHODS =head2 Constructors =over =item C<new> Does not accept a bare C<name> argument. Instead, accepts only an id. See also: L<Bugzilla::Object/new>. =back =head2 Accessors These return data about the object, without modifying the object. =over =item C<event_id> The L<Bugzilla::Whine> event object id for this object. =item C<run_day> The day or day pattern that a L<Bugzilla::Whine> event is scheduled to run. =item C<run_time> The time or time pattern that a L<Bugzilla::Whine> event is scheduled to run. =item C<mailto_is_group> Returns a numeric 1 (C<group>) or 0 (C<user>) to represent whether L</mailto> is a group or user. =item C<mailto> This is either a L<Bugzilla::User> or L<Bugzilla::Group> object to represent the user or group this scheduled event is set to be mailed to. =item C<mailto_users> Returns an array reference of L<Bugzilla::User>s. This is derived from the L<Bugzilla::Group> stored in L</mailto> if L</mailto_is_group> is true and the group is still active, otherwise it will contain a single array element for the L<Bugzilla::User> in L</mailto>. =back =head1 B<Methods in need of POD> =over =item eventid =back