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
|
# --
# Copyright (C) 2001-2021 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::System::Console::Command::Admin::CommunicationChannel::Drop;
use strict;
use warnings;
use parent qw(Kernel::System::Console::BaseCommand);
our @ObjectDependencies = (
'Kernel::System::CommunicationChannel',
);
sub Configure {
my ( $Self, %Param ) = @_;
$Self->Description(
'Drop a communication channel (with its data) that is no longer available in the system.'
);
$Self->AddOption(
Name => 'channel-id',
Description => 'The ID of the communication channel to drop.',
Required => 0,
HasValue => 1,
ValueRegex => qr/\A\d+\z/smx,
);
$Self->AddOption(
Name => 'channel-name',
Description => 'The name of the communication channel to drop.',
Required => 0,
HasValue => 1,
ValueRegex => qr/\A\w+\z/smx,
);
$Self->AddOption(
Name => 'force',
Description => 'Force drop the channel even if there is existing article data, use with care.',
Required => 0,
HasValue => 0,
);
return;
}
sub PreRun {
my ( $Self, %Param ) = @_;
my $ChannelID = $Self->GetOption('channel-id');
my $ChannelName = $Self->GetOption('channel-name');
if ( !$ChannelID && !$ChannelName ) {
die "Please provide either --channel-id or --channel-name option.\n";
}
return;
}
sub Run {
my ( $Self, %Param ) = @_;
$Self->Print("<yellow>Deleting communication channel...</yellow>\n");
my $ChannelID = $Self->GetOption('channel-id');
my $ChannelName = $Self->GetOption('channel-name');
my $CommunicationChannelObject = $Kernel::OM->Get('Kernel::System::CommunicationChannel');
my %CommunicationChannel = $CommunicationChannelObject->ChannelGet(
ChannelID => $ChannelID,
ChannelName => $ChannelName,
);
if ( !%CommunicationChannel ) {
if ($ChannelID) {
$Self->PrintError("Channel with the ID $ChannelID could not be found!");
}
else {
$Self->PrintError("Channel '$ChannelName' could not be found!");
}
return $Self->ExitCodeError();
}
# Try to drop the channel.
my $Success = $CommunicationChannelObject->ChannelDrop(
ChannelID => $ChannelID,
ChannelName => $ChannelName,
DropArticleData => $Self->GetOption('force'),
);
if ( !$Success ) {
$Self->PrintError('Could not drop a channel!');
if ( !$Self->GetOption('force') ) {
$Self->Print("<yellow>Channel might still have associated data in the system.</yellow>\n");
$Self->Print("If you want to drop this data as well, please use the <green>--force</green> switch.\n");
}
else {
$Self->Print("<yellow>Please note that only invalid channels can be dropped.</yellow>\n");
}
return $Self->ExitCodeError();
}
$Self->Print("<green>Done.</green>\n");
return $Self->ExitCodeOk();
}
1;
|