# --
# Kernel/Modules/AdminQueueResponses.pm - queue <-> responses
# Copyright (C) 2001-2007 OTRS GmbH, http://otrs.org/
# --
# $Id: AdminQueueResponses.pm,v 1.19 2007/05/11 07:33:46 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::AdminQueueResponses;
use strict;
use vars qw($VERSION);
$VERSION = '$Revision: 1.19 $';
$VERSION =~ s/^\$.*:\W(.*)\W.+?$/$1/;
sub new {
my $Type = shift;
my %Param = @_;
# allocate new hash for object
my $Self = {};
bless ($Self, $Type);
# get common opjects
foreach (keys %Param) {
$Self->{$_} = $Param{$_};
}
# check all needed objects
foreach (qw(ParamObject DBObject LayoutObject ConfigObject LogObject)) {
if (!$Self->{$_}) {
$Self->{LayoutObject}->FatalError(Message => "Got no $_!");
}
}
return $Self;
}
sub Run {
my $Self = shift;
my %Param = @_;
my $Output = '';
my $Subaction = $Self->{Subaction};
my $UserID = $Self->{UserID};
my $ID = $Self->{ParamObject}->GetParam(Param => 'ID') || '';
$ID = $Self->{DBObject}->Quote($ID, 'Integer') if ($ID);
my $NextScreen = 'AdminQueueResponses';
# user <-> group 1:n
if ($Subaction eq 'Response') {
$Output .= $Self->{LayoutObject}->Header();
$Output .= $Self->{LayoutObject}->NavigationBar(Type => 'Admin');
# get StdResponses data
my %StdResponsesData = $Self->{DBObject}->GetTableData(
Table => 'standard_response',
What => 'id, name',
Where => "id = $ID",
);
# get queue data
my %QueueData = $Self->{DBObject}->GetTableData(
Table => 'queue',
What => 'id, name',
Valid => 1
);
my %Data = $Self->{DBObject}->GetTableData(
Table => 'queue_standard_response',
What => 'queue_id, standard_response_id',
Where => "standard_response_id = $ID"
);
$Output .= $Self->_Mask(
FirstData => \%StdResponsesData,
SecondData => \%QueueData,
Data => \%Data,
Type => 'Response',
);
$Output .= $Self->{LayoutObject}->Footer();
}
# group <-> user n:1
elsif ($Subaction eq 'Queue') {
$Output .= $Self->{LayoutObject}->Header();
$Output .= $Self->{LayoutObject}->NavigationBar(Type => 'Admin');
# get StdResponses data
my %StdResponsesData = $Self->{DBObject}->GetTableData(
Table => 'standard_response',
What => 'id, name',
Valid => 1
);
# get queue data
my %QueueData = $Self->{DBObject}->GetTableData(
Table => 'queue',
What => 'id, name',
Where => "id = $ID",
);
my %Data = $Self->{DBObject}->GetTableData(
Table => 'queue_standard_response',
What => 'standard_response_id, queue_id',
Where => "queue_id = $ID"
);
$Output .= $Self->_Mask(
FirstData => \%QueueData,
SecondData => \%StdResponsesData,
Data => \%Data,
Type => 'Queue',
);
$Output .= $Self->{LayoutObject}->Footer();
}
# queues to standard_responses
elsif ($Subaction eq 'ChangeQueue') {
my @NewIDs = $Self->{ParamObject}->GetArray(Param => 'IDs');
$Self->{DBObject}->Do(SQL => "DELETE FROM queue_standard_response WHERE queue_id = $ID");
foreach my $NewID (@NewIDs) {
# db quote
$NewID = $Self->{DBObject}->Quote($NewID, 'Integer');
my $SQL = "INSERT INTO queue_standard_response (queue_id, standard_response_id, create_time, create_by, " .
" change_time, change_by)" .
" VALUES " .
" ($ID, $NewID, current_timestamp, $UserID, current_timestamp, $UserID)";
$Self->{DBObject}->Do(SQL => $SQL);
}
$Output .= $Self->{LayoutObject}->Redirect(OP => "Action=$NextScreen");
}
# standard_responses top queues
elsif ($Subaction eq 'ChangeResponse') {
my @NewIDs = $Self->{ParamObject}->GetArray(Param => 'IDs');
$Self->{DBObject}->Do(SQL => "DELETE FROM queue_standard_response WHERE standard_response_id = $ID");
foreach my $NewID (@NewIDs) {
# db quote
$NewID = $Self->{DBObject}->Quote($NewID, 'Integer');
my $SQL = "INSERT INTO queue_standard_response (queue_id, standard_response_id, create_time, create_by, " .
" change_time, change_by)" .
" VALUES " .
" ($NewID, $ID, current_timestamp, $UserID, current_timestamp, $UserID)";
$Self->{DBObject}->Do(SQL => $SQL);
}
$Output .= $Self->{LayoutObject}->Redirect(OP => "Action=$NextScreen");
}
# else ! print form
else {
$Output .= $Self->{LayoutObject}->Header();
$Output .= $Self->{LayoutObject}->NavigationBar(Type => 'Admin');
# get StdResponses data
my %StdResponsesData = $Self->{DBObject}->GetTableData(
Table => 'standard_response',
What => 'id, name',
Valid => 1
);
# get queue data
my %QueueData = $Self->{DBObject}->GetTableData(
Table => 'queue',
What => 'id, name',
Valid => 1
);
$Output .= $Self->_MaskFrom(
FirstData => \%StdResponsesData,
SecondData => \%QueueData
);
$Output .= $Self->{LayoutObject}->Footer();
}
return $Output;
}
sub _Mask {
my $Self = shift;
my %Param = @_;
my $FirstData = $Param{FirstData};
my %FirstDataTmp = %$FirstData;
my $SecondData = $Param{SecondData};
my %SecondDataTmp = %$SecondData;
my $Data = $Param{Data};
my %DataTmp = %$Data;
$Param{Type} = $Param{Type} || 'Response';
my $NeType = 'Response';
$NeType = 'Queue' if ($Param{Type} eq 'Response');
foreach (sort keys %FirstDataTmp) {
$FirstDataTmp{$_} = $Self->{LayoutObject}->Ascii2Html(
Text => $FirstDataTmp{$_},
HTMLQuote => 1,
LanguageTranslation => 0,
) || '';
$Param{OptionStrg0} .= "$Param{Type}: {LayoutObject}->{Baselink}Action=Admin$Param{Type}&Subaction=Change&ID=$_\">" .
"$FirstDataTmp{$_} (id=$_)
";
$Param{OptionStrg0} .= "
\n";
}
$Param{OptionStrg0} .= "$NeType:
\n";
return $Self->{LayoutObject}->Output(TemplateFile => 'AdminQueueResponsesChangeForm', Data => \%Param);
}
sub _MaskFrom {
my $Self = shift;
my %Param = @_;
my $UserData = $Param{FirstData};
my %UserDataTmp = %$UserData;
my $GroupData = $Param{SecondData};
my %GroupDataTmp = %$GroupData;
my $BaseLink = $Self->{LayoutObject}->{Baselink} . "Action=AdminQueueResponses&";
foreach (sort {$UserDataTmp{$a} cmp $UserDataTmp{$b}} keys %UserDataTmp) {
$UserDataTmp{$_} = $Self->{LayoutObject}->Ascii2Html(
Text => $UserDataTmp{$_},
HTMLQuote => 1,
LanguageTranslation => 0,
);
$Param{AnswerQueueStrg} .= "$UserDataTmp{$_}
";
}
foreach (sort {$GroupDataTmp{$a} cmp $GroupDataTmp{$b}} keys %GroupDataTmp) {
$GroupDataTmp{$_} = $Self->{LayoutObject}->Ascii2Html(
Text => $GroupDataTmp{$_},
HTMLQuote => 1,
LanguageTranslation => 0,
);
$Param{QueueAnswerStrg}.= "$GroupDataTmp{$_}
";
}
return $Self->{LayoutObject}->Output(TemplateFile => 'AdminQueueResponsesForm', Data => \%Param);
}
1;