# 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 base 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. =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 event schedule. This is an implementation of L, and so has all the same methods available as L, in addition to what is documented below. =head1 METHODS =head2 Constructors =over =item C Does not accept a bare C argument. Instead, accepts only an id. See also: L. =back =head2 Accessors These return data about the object, without modifying the object. =over =item C The L event object id for this object. =item C The day or day pattern that a L event is scheduled to run. =item C The time or time pattern that a L event is scheduled to run. =item C Returns a numeric 1 (C) or 0 (C) to represent whether L is a group or user. =item C This is either a L or L object to represent the user or group this scheduled event is set to be mailed to. =item C Returns an array reference of Ls. This is derived from the L stored in L if L is true and the group is still active, otherwise it will contain a single array element for the L in L. =back