Files
scripts/Perl OTRS/Kernel/Output/HTML/Notification/AgentOTRSBusiness.pm
2024-10-14 00:08:40 +02:00

180 lines
5.2 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::Notification::AgentOTRSBusiness;
use parent 'Kernel::Output::HTML::Base';
use strict;
use warnings;
use utf8;
use Kernel::Language qw(Translatable);
our @ObjectDependencies = (
'Kernel::Config',
'Kernel::Output::HTML::Layout',
'Kernel::System::Group',
'Kernel::System::OTRSBusiness',
);
sub Run {
my ( $Self, %Param ) = @_;
my $Output = '';
# get OTRS business object
my $OTRSBusinessObject = $Kernel::OM->Get('Kernel::System::OTRSBusiness');
# get config options
my $Group = $Param{Config}->{Group} || 'admin';
my $IsInstalled = $OTRSBusinessObject->OTRSBusinessIsInstalled();
my $OTRSBusinessLabel;
if ( $OTRSBusinessObject->OTRSSTORMIsInstalled() ) {
$OTRSBusinessLabel = '<b>STORM powered by OTRS</b>™';
}
elsif ( $OTRSBusinessObject->OTRSCONTROLIsInstalled() ) {
$OTRSBusinessLabel = '<b>CONTROL powered by OTRS</b>™';
}
else {
$OTRSBusinessLabel = '<b>OTRS Business Solution</b>™';
}
# get layout object
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
#
# check if OTRS Business Solution™ is not installed
#
if ( $Param{Type} eq 'Admin' && !$IsInstalled ) {
my $Text = $LayoutObject->{LanguageObject}->Translate(
'%s Upgrade to %s now! %s',
'<a href="'
. $LayoutObject->{Baselink}
. 'Action=AdminOTRSBusiness'
. '">',
$OTRSBusinessLabel,
'</a>',
);
return $LayoutObject->Notify(
Data => $Text,
Priority => 'Info',
);
}
# all following checks require OTRS Business Solution™ to be installed
return '' if !$IsInstalled;
#
# check entitlement status
#
my $EntitlementStatus = $OTRSBusinessObject->OTRSBusinessEntitlementStatus(
CallCloudService => 0,
);
if ( $EntitlementStatus eq 'warning-error' || $EntitlementStatus eq 'forbidden' ) {
my $Text = $LayoutObject->{LanguageObject}->Translate(
'This system uses the %s without a proper license! Please make contact with %s to renew or activate your contract!',
$OTRSBusinessLabel,
'sales@otrs.com',
);
# Redirect to error screen because of unauthorized usage.
if ( $EntitlementStatus eq 'forbidden' ) {
$Text .= '
<script>
if (!window.location.search.match(/^[?]Action=(AgentOTRSBusiness|Admin.*)/)) {
window.location.search = "Action=AgentOTRSBusiness;Subaction=BlockScreen";
}
</script>'
}
return $LayoutObject->Notify(
Data => $Text,
Priority => 'Error',
);
}
elsif ( $EntitlementStatus eq 'warning' ) {
$Output .= $LayoutObject->Notify(
Info => $OTRSBusinessObject->OTRSSTORMIsInstalled()
?
Translatable('Please verify your license data!')
:
Translatable(
'Connection to cloud.otrs.com via HTTPS couldn\'t be established. Please make sure that your OTRS can connect to cloud.otrs.com via port 443.'
),
Priority => 'Error',
);
}
my $HasPermission = $Kernel::OM->Get('Kernel::System::Group')->PermissionCheck(
UserID => $Self->{UserID},
GroupName => $Group,
Type => 'rw',
);
# all following notifications should only be visible for administrators
if ( !$HasPermission ) {
return '';
}
#
# check contract expiry
#
my $ExpiryDate = $OTRSBusinessObject->OTRSBusinessContractExpiryDateCheck();
if ($ExpiryDate) {
my $Text = $LayoutObject->{LanguageObject}->Translate(
'The license for your %s is about to expire. Please make contact with %s to renew your contract!',
$OTRSBusinessLabel,
'sales@otrs.com',
);
$Output .= $LayoutObject->Notify(
Data => $Text,
Priority => 'Warning',
);
}
#
# check for available updates
#
my %UpdatesAvailable = $OTRSBusinessObject->OTRSBusinessVersionCheckOffline();
if ( $UpdatesAvailable{OTRSBusinessUpdateAvailable} ) {
my $Text = $LayoutObject->{LanguageObject}->Translate(
'An update for your %s is available! Please update at your earliest!',
$OTRSBusinessLabel
);
$Output .= $LayoutObject->Notify(
Data => $Text,
Priority => 'Warning',
);
}
if ( $UpdatesAvailable{FrameworkUpdateAvailable} ) {
my $Text = $LayoutObject->{LanguageObject}->Translate(
'An update for your %s is available, but there is a conflict with your framework version! Please update your framework first!',
$OTRSBusinessLabel
);
$Output .= $LayoutObject->Notify(
Data => $Text,
Priority => 'Warning',
);
}
return $Output;
}
1;