This commit is contained in:
2024-10-14 00:08:40 +02:00
parent dbfba56f66
commit 1462d52e13
4572 changed files with 2658864 additions and 0 deletions

View File

@@ -0,0 +1,316 @@
# --
# 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::System::Salutation;
use strict;
use warnings;
our @ObjectDependencies = (
'Kernel::System::Cache',
'Kernel::System::DB',
'Kernel::System::Log',
'Kernel::System::Valid',
);
=head1 NAME
Kernel::System::Salutation - salutation lib
=head1 DESCRIPTION
All salutation functions.
=head1 PUBLIC INTERFACE
=head2 new()
Don't use the constructor directly, use the ObjectManager instead:
my $SalutationObject = $Kernel::OM->Get('Kernel::System::Salutation');
=cut
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {};
bless( $Self, $Type );
$Self->{CacheType} = 'Salutation';
$Self->{CacheTTL} = 60 * 60 * 24 * 20;
return $Self;
}
=head2 SalutationAdd()
add new salutations
my $ID = $SalutationObject->SalutationAdd(
Name => 'New Salutation',
Text => "--\nSome Salutation Infos",
ContentType => 'text/plain; charset=utf-8',
Comment => 'some comment',
ValidID => 1,
UserID => 123,
);
=cut
sub SalutationAdd {
my ( $Self, %Param ) = @_;
# check needed stuff
for (qw(Name Text ValidID UserID ContentType)) {
if ( !$Param{$_} ) {
$Kernel::OM->Get('Kernel::System::Log')->Log(
Priority => 'error',
Message => "Need $_!",
);
return;
}
}
# get database object
my $DBObject = $Kernel::OM->Get('Kernel::System::DB');
return if !$DBObject->Do(
SQL => 'INSERT INTO salutation (name, text, content_type, comments, valid_id, '
. ' create_time, create_by, change_time, change_by) VALUES '
. ' (?, ?, ?, ?, ?, current_timestamp, ?, current_timestamp, ?)',
Bind => [
\$Param{Name}, \$Param{Text}, \$Param{ContentType}, \$Param{Comment},
\$Param{ValidID}, \$Param{UserID}, \$Param{UserID},
],
);
# get new salutation id
$DBObject->Prepare(
SQL => 'SELECT id FROM salutation WHERE name = ?',
Bind => [ \$Param{Name} ],
Limit => 1,
);
my $ID;
while ( my @Row = $DBObject->FetchrowArray() ) {
$ID = $Row[0];
}
return if !$ID;
# reset cache
$Kernel::OM->Get('Kernel::System::Cache')->CleanUp(
Type => $Self->{CacheType},
);
return $ID;
}
=head2 SalutationGet()
get salutations attributes
my %Salutation = $SalutationObject->SalutationGet(
ID => 123,
);
=cut
sub SalutationGet {
my ( $Self, %Param ) = @_;
# check needed stuff
if ( !$Param{ID} ) {
$Kernel::OM->Get('Kernel::System::Log')->Log(
Priority => 'error',
Message => "Need ID!",
);
return;
}
# check cache
my $Cache = $Kernel::OM->Get('Kernel::System::Cache')->Get(
Type => $Self->{CacheType},
Key => 'SalutationGet' . $Param{ID},
);
return %{$Cache} if $Cache;
# get database object
my $DBObject = $Kernel::OM->Get('Kernel::System::DB');
# get the salutation
return if !$DBObject->Prepare(
SQL => 'SELECT id, name, text, content_type, comments, valid_id, change_time, create_time '
. 'FROM salutation WHERE id = ?',
Bind => [ \$Param{ID} ],
);
# fetch the result
my %Data;
while ( my @Data = $DBObject->FetchrowArray() ) {
%Data = (
ID => $Data[0],
Name => $Data[1],
Text => $Data[2],
ContentType => $Data[3] || 'text/plain',
Comment => $Data[4],
ValidID => $Data[5],
ChangeTime => $Data[6],
CreateTime => $Data[7],
);
}
# no data found
if ( !%Data ) {
$Kernel::OM->Get('Kernel::System::Log')->Log(
Priority => 'error',
Message => "SalutationID '$Param{ID}' not found!",
);
return;
}
# set cache
$Kernel::OM->Get('Kernel::System::Cache')->Set(
Type => $Self->{CacheType},
TTL => $Self->{CacheTTL},
Key => 'SalutationGet' . $Param{ID},
Value => \%Data,
);
return %Data;
}
=head2 SalutationUpdate()
update salutation attributes
$SalutationObject->SalutationUpdate(
ID => 123,
Name => 'New Salutation',
Text => "--\nSome Salutation Infos",
ContentType => 'text/plain; charset=utf-8',
Comment => 'some comment',
ValidID => 1,
UserID => 123,
);
=cut
sub SalutationUpdate {
my ( $Self, %Param ) = @_;
# check needed stuff
for (qw(ID Name Text ContentType ValidID UserID)) {
if ( !$Param{$_} ) {
$Kernel::OM->Get('Kernel::System::Log')->Log(
Priority => 'error',
Message => "Need $_!",
);
return;
}
}
# get database object
my $DBObject = $Kernel::OM->Get('Kernel::System::DB');
# sql
return if !$DBObject->Do(
SQL => 'UPDATE salutation SET name = ?, text = ?, content_type = ?, comments = ?, '
. 'valid_id = ?, change_time = current_timestamp, change_by = ? WHERE id = ?',
Bind => [
\$Param{Name}, \$Param{Text}, \$Param{ContentType}, \$Param{Comment},
\$Param{ValidID}, \$Param{UserID}, \$Param{ID},
],
);
# reset cache
$Kernel::OM->Get('Kernel::System::Cache')->CleanUp(
Type => $Self->{CacheType},
);
return 1;
}
=head2 SalutationList()
get salutation list
my %List = $SalutationObject->SalutationList();
my %List = $SalutationObject->SalutationList(
Valid => 0,
);
=cut
sub SalutationList {
my ( $Self, %Param ) = @_;
# check valid param
if ( !defined $Param{Valid} ) {
$Param{Valid} = 1;
}
# create cachekey
my $CacheKey;
if ( $Param{Valid} ) {
$CacheKey = 'SalutationList::Valid';
}
else {
$CacheKey = 'SalutationList::All';
}
# check cache
my $Cache = $Kernel::OM->Get('Kernel::System::Cache')->Get(
Type => $Self->{CacheType},
Key => $CacheKey,
);
return %{$Cache} if $Cache;
# create sql
my $SQL = 'SELECT id, name FROM salutation ';
if ( $Param{Valid} ) {
$SQL
.= "WHERE valid_id IN ( ${\(join ', ', $Kernel::OM->Get('Kernel::System::Valid')->ValidIDsGet())} )";
}
# get database object
my $DBObject = $Kernel::OM->Get('Kernel::System::DB');
return if !$DBObject->Prepare( SQL => $SQL );
# fetch the result
my %Data;
while ( my @Row = $DBObject->FetchrowArray() ) {
$Data{ $Row[0] } = $Row[1];
}
# set cache
$Kernel::OM->Get('Kernel::System::Cache')->Set(
Type => $Self->{CacheType},
TTL => $Self->{CacheTTL},
Key => $CacheKey,
Value => \%Data,
);
return %Data;
}
1;
=head1 TERMS AND CONDITIONS
This software is part of the OTRS project (L<https://otrs.org/>).
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 L<https://www.gnu.org/licenses/gpl-3.0.txt>.
=cut