Files
2024-10-14 00:08:40 +02:00

155 lines
4.0 KiB
Perl

# --
# Copyright (C) 2001-2019 OTRS AG, https://otrs.com/
# --
# 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 https://www.gnu.org/licenses/gpl-3.0.txt.
# --
package Kernel::Output::HTML::Preferences::CustomQueue;
use strict;
use warnings;
use Kernel::Language qw(Translatable);
our @ObjectDependencies = (
'Kernel::Output::HTML::Layout',
'Kernel::System::Cache',
'Kernel::System::DB',
'Kernel::System::Group',
'Kernel::System::Queue',
'Kernel::System::Web::Request',
);
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {%Param};
bless( $Self, $Type );
for my $Needed (qw(UserID ConfigItem)) {
die "Got no $Needed!" if ( !$Self->{$Needed} );
}
return $Self;
}
sub Param {
my ( $Self, %Param ) = @_;
my @Params = ();
my %QueueData = ();
my @CustomQueueIDs;
# check needed param, if no user id is given, do not show this box
if ( !$Param{UserData}->{UserID} ) {
return ();
}
my $QueueObject = $Kernel::OM->Get('Kernel::System::Queue');
if ( $Param{UserData}->{UserID} ) {
%QueueData = $QueueObject->GetAllQueues(
UserID => $Param{UserData}->{UserID},
Type => $Self->{ConfigItem}->{Permission} || 'ro',
);
}
# get param object
my $ParamObject = $Kernel::OM->Get('Kernel::System::Web::Request');
if ( $ParamObject->GetArray( Param => 'QueueID' ) ) {
@CustomQueueIDs = $ParamObject->GetArray( Param => 'QueueID' );
}
elsif ( $Param{UserData}->{UserID} ) {
@CustomQueueIDs = $QueueObject->GetAllCustomQueues(
UserID => $Param{UserData}->{UserID}
);
}
push(
@Params,
{
%Param,
Option => $Kernel::OM->Get('Kernel::Output::HTML::Layout')->AgentQueueListOption(
Data => \%QueueData,
Size => 10,
Name => 'QueueID',
Class => 'Modernize',
SelectedIDRefArray => \@CustomQueueIDs,
Multiple => 1,
Translation => 0,
OnChangeSubmit => 0,
OptionTitle => 1,
TreeView => 1,
),
Name => 'QueueID',
},
);
return @Params;
}
sub Run {
my ( $Self, %Param ) = @_;
# get DB object
my $DBObject = $Kernel::OM->Get('Kernel::System::DB');
# delete old custom queues
$DBObject->Do(
SQL => 'DELETE FROM personal_queues WHERE user_id = ?',
Bind => [ \$Param{UserData}->{UserID} ],
);
# get ro groups of agent
my %GroupMember = $Kernel::OM->Get('Kernel::System::Group')->PermissionUserGet(
UserID => $Param{UserData}->{UserID},
Type => 'ro',
);
# add new custom queues
my $QueueObject = $Kernel::OM->Get('Kernel::System::Queue');
for my $Key ( sort keys %{ $Param{GetParam} } ) {
my @Array = @{ $Param{GetParam}->{$Key} };
for my $ID (@Array) {
# get group of queue
my %Queue = $QueueObject->QueueGet( ID => $ID );
# check permissions
if ( $GroupMember{ $Queue{GroupID} } ) {
$DBObject->Do(
SQL => "
INSERT INTO personal_queues (queue_id, user_id)
VALUES (?, ?)",
Bind => [ \$ID, \$Param{UserData}->{UserID} ]
);
}
}
}
my $CacheKey = 'GetAllCustomQueues::' . $Param{UserData}->{UserID};
$Kernel::OM->Get('Kernel::System::Cache')->Delete(
Type => 'Queue',
Key => $CacheKey,
);
$Self->{Message} = Translatable('Preferences updated successfully!');
return 1;
}
sub Error {
my ( $Self, %Param ) = @_;
return $Self->{Error} || '';
}
sub Message {
my ( $Self, %Param ) = @_;
return $Self->{Message} || '';
}
1;