# -- # 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