init III
This commit is contained in:
287
Perl OTRS/Kernel/Modules/AdminEmail.pm
Normal file
287
Perl OTRS/Kernel/Modules/AdminEmail.pm
Normal file
@@ -0,0 +1,287 @@
|
||||
# --
|
||||
# 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::Modules::AdminEmail;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
our $ObjectManagerDisabled = 1;
|
||||
|
||||
use Kernel::Language qw(Translatable);
|
||||
|
||||
sub new {
|
||||
my ( $Type, %Param ) = @_;
|
||||
|
||||
# allocate new hash for object
|
||||
my $Self = {%Param};
|
||||
bless( $Self, $Type );
|
||||
|
||||
return $Self;
|
||||
}
|
||||
|
||||
sub Run {
|
||||
my ( $Self, %Param ) = @_;
|
||||
my $Note = '';
|
||||
my ( %GetParam, %Errors );
|
||||
|
||||
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
|
||||
my $ParamObject = $Kernel::OM->Get('Kernel::System::Web::Request');
|
||||
my $UserObject = $Kernel::OM->Get('Kernel::System::User');
|
||||
my $GroupObject = $Kernel::OM->Get('Kernel::System::Group');
|
||||
|
||||
for my $Parameter (qw(From Subject Body Bcc GroupPermission NotifyCustomerUsers)) {
|
||||
$Param{$Parameter} = $ParamObject->GetParam( Param => $Parameter )
|
||||
|| $Param{$Parameter}
|
||||
|| '';
|
||||
}
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# send email
|
||||
# ------------------------------------------------------------ #
|
||||
if ( $Self->{Subaction} eq 'Send' ) {
|
||||
|
||||
# challenge token check for write action
|
||||
$LayoutObject->ChallengeTokenCheck();
|
||||
|
||||
# check needed stuff
|
||||
for my $Needed (qw(From Subject Body GroupPermission)) {
|
||||
if ( !$Param{$Needed} ) {
|
||||
$Errors{ $Needed . 'Invalid' } = 'ServerError';
|
||||
}
|
||||
}
|
||||
|
||||
# get array params
|
||||
for my $Parameter (qw(UserIDs GroupIDs RoleIDs)) {
|
||||
if ( $ParamObject->GetArray( Param => $Parameter ) ) {
|
||||
@{ $GetParam{$Parameter} } = $ParamObject->GetArray( Param => $Parameter );
|
||||
}
|
||||
}
|
||||
|
||||
if ( !%Errors ) {
|
||||
|
||||
# get user recipients address
|
||||
my %Bcc;
|
||||
for my $UserID ( $ParamObject->GetArray( Param => 'UserIDs' ) ) {
|
||||
my %UserData = $UserObject->GetUserData(
|
||||
UserID => $UserID,
|
||||
Valid => 1,
|
||||
);
|
||||
if ( $UserData{UserEmail} ) {
|
||||
$Bcc{ $UserData{UserLogin} } = $UserData{UserEmail};
|
||||
}
|
||||
}
|
||||
|
||||
# get group recipients address
|
||||
for my $GroupID ( $ParamObject->GetArray( Param => 'GroupIDs' ) ) {
|
||||
|
||||
my %UserList = $GroupObject->PermissionGroupGet(
|
||||
GroupID => $GroupID,
|
||||
Type => $Param{GroupPermission},
|
||||
);
|
||||
|
||||
my @GroupMemberList = sort keys %UserList;
|
||||
|
||||
for my $GroupMember (@GroupMemberList) {
|
||||
my %UserData = $UserObject->GetUserData(
|
||||
UserID => $GroupMember,
|
||||
Valid => 1,
|
||||
);
|
||||
if ( $UserData{UserEmail} && $UserData{UserID} != 1 ) {
|
||||
$Bcc{ $UserData{UserLogin} } = $UserData{UserEmail};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# get customerusers that are a member of the groups
|
||||
if ( $Param{NotifyCustomerUsers} ) {
|
||||
for my $GroupID ( $ParamObject->GetArray( Param => 'GroupIDs' ) ) {
|
||||
my @GroupCustomerUserMemberList
|
||||
= $Kernel::OM->Get('Kernel::System::CustomerGroup')->GroupMemberList(
|
||||
Result => 'ID',
|
||||
Type => $Param{GroupPermission},
|
||||
GroupID => $GroupID,
|
||||
);
|
||||
for my $GoupCustomerUserMember (@GroupCustomerUserMemberList) {
|
||||
my %CustomerUserData = $Kernel::OM->Get('Kernel::System::CustomerUser')->CustomerUserDataGet(
|
||||
User => $GoupCustomerUserMember,
|
||||
Valid => 1,
|
||||
);
|
||||
if ( $CustomerUserData{UserEmail} ) {
|
||||
$Bcc{ $CustomerUserData{UserLogin} } = $CustomerUserData{UserEmail};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# get role recipients addresses
|
||||
for my $RoleID ( $ParamObject->GetArray( Param => 'RoleIDs' ) ) {
|
||||
|
||||
my %RoleMemberList = $GroupObject->PermissionRoleUserGet(
|
||||
RoleID => $RoleID,
|
||||
);
|
||||
|
||||
for my $RoleMember ( sort keys %RoleMemberList ) {
|
||||
|
||||
my %UserData = $UserObject->GetUserData(
|
||||
UserID => $RoleMember,
|
||||
Valid => 1,
|
||||
);
|
||||
|
||||
if ( $UserData{UserEmail} ) {
|
||||
$Bcc{ $UserData{UserLogin} } = $UserData{UserEmail};
|
||||
}
|
||||
}
|
||||
}
|
||||
for my $BccKey ( sort keys %Bcc ) {
|
||||
$Param{Bcc} .= $Bcc{$BccKey} . ', ';
|
||||
}
|
||||
|
||||
# check needed stuff
|
||||
if ( !$Param{Bcc} ) {
|
||||
$Note = $LayoutObject->Notify(
|
||||
Priority => 'Error',
|
||||
Info => Translatable('Select at least one recipient.'),
|
||||
);
|
||||
$Errors{BccInvalid} = 'ServerError';
|
||||
}
|
||||
|
||||
# if no errors occurred
|
||||
if ( !%Errors ) {
|
||||
|
||||
# clean up
|
||||
$Param{Body} =~ s/(\r\n|\n\r)/\n/g;
|
||||
$Param{Body} =~ s/\r/\n/g;
|
||||
|
||||
# get content type
|
||||
my $ContentType = 'text/plain';
|
||||
if ( $LayoutObject->{BrowserRichText} ) {
|
||||
$ContentType = 'text/html';
|
||||
|
||||
# verify html document
|
||||
$Param{Body} = $LayoutObject->RichTextDocumentComplete(
|
||||
String => $Param{Body},
|
||||
);
|
||||
}
|
||||
|
||||
# send mail
|
||||
my $Sent = $Kernel::OM->Get('Kernel::System::Email')->Send(
|
||||
From => $Param{From},
|
||||
Bcc => $Param{Bcc},
|
||||
Subject => $Param{Subject},
|
||||
Charset => $LayoutObject->{UserCharset},
|
||||
MimeType => $ContentType,
|
||||
Body => $Param{Body},
|
||||
);
|
||||
if ( !$Sent->{Success} ) {
|
||||
return $LayoutObject->ErrorScreen();
|
||||
}
|
||||
|
||||
my $BccText = $Param{Bcc};
|
||||
$BccText =~ s{(.*?),\s$}{$1}gsmx;
|
||||
$BccText .= ".";
|
||||
|
||||
$LayoutObject->Block(
|
||||
Name => 'Sent',
|
||||
Data => {
|
||||
%Param,
|
||||
Bcc => $BccText,
|
||||
},
|
||||
);
|
||||
my $Output = $LayoutObject->Header();
|
||||
$Output .= $LayoutObject->NavigationBar();
|
||||
$Output .= $LayoutObject->Output(
|
||||
TemplateFile => 'AdminEmail',
|
||||
Data => \%Param,
|
||||
);
|
||||
$Output .= $LayoutObject->Footer();
|
||||
return $Output;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# ------------------------------------------------------------ #
|
||||
# show mask
|
||||
# ------------------------------------------------------------ #
|
||||
|
||||
# add rich text editor
|
||||
if ( $LayoutObject->{BrowserRichText} ) {
|
||||
|
||||
# set up rich text editor
|
||||
$LayoutObject->SetRichTextParameters(
|
||||
Data => \%Param,
|
||||
);
|
||||
}
|
||||
$Param{UserOption} = $LayoutObject->BuildSelection(
|
||||
Data => {
|
||||
$UserObject->UserList(
|
||||
Valid => 1,
|
||||
Type => 'Long',
|
||||
),
|
||||
},
|
||||
Name => 'UserIDs',
|
||||
Size => 6,
|
||||
Multiple => 1,
|
||||
Translation => 0,
|
||||
Class => 'Modernize ' . ( $Errors{BccInvalid} || '' ),
|
||||
);
|
||||
|
||||
$Param{GroupOption} = $LayoutObject->BuildSelection(
|
||||
Data => { $GroupObject->GroupList( Valid => 1 ) },
|
||||
Size => 6,
|
||||
Name => 'GroupIDs',
|
||||
Multiple => 1,
|
||||
Translation => 0,
|
||||
Class => 'Modernize ' . ( $Errors{BccInvalid} || '' ),
|
||||
);
|
||||
my %RoleList = $GroupObject->RoleList( Valid => 1 );
|
||||
$Param{RoleOption} = $LayoutObject->BuildSelection(
|
||||
Data => \%RoleList,
|
||||
Size => 6,
|
||||
Name => 'RoleIDs',
|
||||
Multiple => 1,
|
||||
Translation => 0,
|
||||
Class => 'Modernize ' . ( $Errors{BccInvalid} || '' ),
|
||||
);
|
||||
|
||||
$LayoutObject->Block(
|
||||
Name => 'Form',
|
||||
Data => {
|
||||
%Param,
|
||||
%Errors,
|
||||
},
|
||||
);
|
||||
|
||||
if (%RoleList) {
|
||||
$LayoutObject->Block(
|
||||
Name => 'RoleRecipients',
|
||||
Data => \%Param,
|
||||
);
|
||||
}
|
||||
|
||||
if ( $Kernel::OM->Get('Kernel::Config')->Get('CustomerGroupSupport') ) {
|
||||
$LayoutObject->Block(
|
||||
Name => 'CustomerUserGroups',
|
||||
Data => \%Param,
|
||||
);
|
||||
}
|
||||
my $Output = $LayoutObject->Header();
|
||||
$Output .= $LayoutObject->NavigationBar();
|
||||
$Output .= $Note;
|
||||
$Output .= $LayoutObject->Output(
|
||||
TemplateFile => 'AdminEmail',
|
||||
Data => {
|
||||
%Param,
|
||||
%Errors,
|
||||
},
|
||||
);
|
||||
$Output .= $LayoutObject->Footer();
|
||||
return $Output;
|
||||
}
|
||||
|
||||
1;
|
||||
Reference in New Issue
Block a user