# --
# 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).
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.
=cut