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
|
# --
# Kernel/Modules/AgentTicketLock.pm - to set or unset a lock for tickets
# Copyright (C) 2001-2007 OTRS GmbH, http://otrs.org/
# --
# $Id: AgentTicketLock.pm,v 1.4 2007/01/20 18:04:49 mh 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.4 $';
$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)) {
if (!$Self->{$_}) {
$Self->{LayoutObject}->FatalError(Message => "Got no $_!");
}
}
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;
|