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
|
# --
# Kernel/Output/HTML/CustomerNewTicketQueueSelectionGeneric.pm
# Copyright (C) 2001-2008 OTRS AG, http://otrs.org/
# --
# $Id: CustomerNewTicketQueueSelectionGeneric.pm,v 1.3.2.1 2008/02/23 00:42:41 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-2.0.txt.
# --
package Kernel::Output::HTML::CustomerNewTicketQueueSelectionGeneric;
use strict;
use vars qw($VERSION);
$VERSION = '$Revision: 1.3.2.1 $';
$VERSION =~ s/^\$.*:\W(.*)\W.+?$/$1/;
sub new {
my $Type = shift;
my %Param = @_;
# allocate new hash for object
my $Self = {};
bless ($Self, $Type);
# get needed objects
foreach (qw(ConfigObject LogObject DBObject LayoutObject UserID TicketObject ParamObject QueueObject SystemAddress)) {
$Self->{$_} = $Param{$_} || die "Got no $_!";
}
return $Self;
}
sub Run {
my $Self = shift;
my %Param = @_;
my %NewTos = ();
if ($Self->{ConfigObject}->{CustomerPanelOwnSelection}) {
foreach (keys %{$Self->{ConfigObject}->{CustomerPanelOwnSelection}}) {
my $Value = $Self->{ConfigObject}->{CustomerPanelOwnSelection}->{$_};
if ($_ =~ /^\d+$/) {
$NewTos{$_} = $Value;
}
else {
if ($Self->{QueueObject}->QueueLookup(Queue => $_)) {
$NewTos{$Self->{QueueObject}->QueueLookup(Queue => $_)} = $Value;
}
else {
$NewTos{$_} = $Value;
}
}
}
# check create permissions
my %Queues = $Self->{TicketObject}->MoveList(
CustomerUserID => $Param{Env}->{UserID},
Type => 'create',
Action => $Param{Env}->{Action},
);
for my $QueueID ( keys %NewTos ) {
if ( !$Queues{ $QueueID } ) {
delete $NewTos{ $QueueID };
}
}
}
else {
# SelectionType Queue or SystemAddress?
my %Tos = ();
if ($Self->{ConfigObject}->Get('CustomerPanelSelectionType') eq 'Queue') {
%Tos = $Self->{TicketObject}->MoveList(
CustomerUserID => $Param{Env}->{UserID},
Type => 'create',
Action => $Param{Env}->{Action},
);
}
else {
my %Queues = $Self->{TicketObject}->MoveList(
CustomerUserID => $Param{Env}->{UserID},
Type => 'create',
Action => $Param{Env}->{Action},
);
my %SystemTos = $Self->{DBObject}->GetTableData(
Table => 'system_address',
What => 'queue_id, id',
Valid => 1,
Clamp => 1,
);
foreach (keys %Queues) {
if ($SystemTos{$_}) {
$Tos{$_} = $Queues{$_};
}
}
}
%NewTos = %Tos;
# build selection string
foreach (keys %NewTos) {
my %QueueData = $Self->{QueueObject}->QueueGet(ID => $_);
my $Srting = $Self->{ConfigObject}->Get('CustomerPanelSelectionString') || '<Realname> <<Email>> - Queue: <Queue>';
$Srting =~ s/<Queue>/$QueueData{Name}/g;
$Srting =~ s/<QueueComment>/$QueueData{Comment}/g;
if ($Self->{ConfigObject}->Get('CustomerPanelSelectionType') ne 'Queue') {
my %SystemAddressData = $Self->{SystemAddress}->SystemAddressGet(ID => $QueueData{SystemAddressID});
$Srting =~ s/<Realname>/$SystemAddressData{Realname}/g;
$Srting =~ s/<Email>/$SystemAddressData{Name}/g;
}
$NewTos{$_} = $Srting;
}
}
return (%NewTos);
}
1;
|