1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
# --
# Kernel/Modules/AgentTicketLock.pm - to set or unset a lock for tickets
# Copyright (C) 2001-2005 Martin Edenhofer <martin+code@otrs.org>
# --
# $Id: AgentTicketLock.pm,v 1.1 2005/02/17 07:05:56 martin Exp $
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (GPL). If you
# did not receive this file, see http://www.gnu.org/licenses/gpl.txt.
# --
package Kernel::Modules::AgentTicketLock;
use strict;
use vars qw($VERSION);
$VERSION = '$Revision: 1.1 $';
$VERSION =~ s/^\$.*:\W(.*)\W.+?$/$1/;
# --
sub new {
my $Type = shift;
my %Param = @_;
# allocate new hash for object
my $Self = {};
bless ($Self, $Type);
foreach (keys %Param) {
$Self->{$_} = $Param{$_};
}
# check all needed objects
foreach (qw(ParamObject DBObject QueueObject LayoutObject ConfigObject LogObject)) {
die "Got no $_!" if (!$Self->{$_});
}
return $Self;
}
# --
sub Run {
my $Self = shift;
my %Param = @_;
my $Output;
# --
# check needed stuff
# --
if (!$Self->{TicketID}) {
# error page
return $Self->{LayoutObject}->ErrorScreen(
Message => "Can't lock Ticket, no TicketID is given!",
Comment => 'Please contact the admin.',
);
}
# --
# check permissions
# --
if (!$Self->{TicketObject}->Permission(
Type => 'lock',
TicketID => $Self->{TicketID},
UserID => $Self->{UserID})) {
# error screen, don't show ticket
return $Self->{LayoutObject}->NoPermission(WithHeader => 'yes');
}
# --
# start with actions
# --
if ($Self->{Subaction} eq 'Unlock') {
# check if I'm the owner
my ($OwnerID, $OwnerLogin) = $Self->{TicketObject}->OwnerCheck(
TicketID => $Self->{TicketID},
);
if ($OwnerID != $Self->{UserID}) {
$Output .= $Self->{LayoutObject}->Header(Title => 'Error');
$Output .= $Self->{LayoutObject}->Warning(
Message => "Sorry, the current owner is $OwnerLogin!",
Comment => 'Please change the owner first.',
);
$Output .= $Self->{LayoutObject}->Footer();
return $Output;
}
# set unlock
if ($Self->{TicketObject}->LockSet(
TicketID => $Self->{TicketID},
Lock => 'unlock',
UserID => $Self->{UserID},
)) {
# redirekt
if ($Self->{QueueID}) {
return $Self->{LayoutObject}->Redirect(OP => "QueueID=$Self->{QueueID}");
}
else {
return $Self->{LayoutObject}->Redirect(OP => $Self->{LastScreenView});
}
}
else {
return $Self->{LayoutObject}->ErrorScreen();
}
}
else {
# check if the agent is ablee to lock
if ($Self->{TicketObject}->LockIsTicketLocked(TicketID => $Self->{TicketID})) {
my ($OwnerID, $OwnerLogin) = $Self->{TicketObject}->OwnerCheck(
TicketID => $Self->{TicketID},
);
$Output = $Self->{LayoutObject}->Header(Title => 'Error');
$Output .= $Self->{LayoutObject}->Warning(
Message => "Ticket (ID=$Self->{TicketID}) is locked for $OwnerLogin!",
Comment => "Change the owner!",
);
$Output .= $Self->{LayoutObject}->Footer();
return $Output;
}
# set lock
if ($Self->{TicketObject}->LockSet(
TicketID => $Self->{TicketID},
Lock => 'lock',
UserID => $Self->{UserID},
) &&
# set user id
$Self->{TicketObject}->OwnerSet(
TicketID => $Self->{TicketID},
UserID => $Self->{UserID},
NewUserID => $Self->{UserID},
)) {
# redirekt
if ($Self->{QueueID}) {
return $Self->{LayoutObject}->Redirect(OP => "&QueueID=$Self->{QueueID}");
}
else {
return $Self->{LayoutObject}->Redirect(OP => $Self->{LastScreenView});
}
}
else {
return $Self->{LayoutObject}->ErrorScreen();
}
}
}
# --
1;
|