init III
This commit is contained in:
198
Perl OTRS/Kernel/Output/HTML/Preferences/OutOfOffice.pm
Normal file
198
Perl OTRS/Kernel/Output/HTML/Preferences/OutOfOffice.pm
Normal file
@@ -0,0 +1,198 @@
|
||||
# --
|
||||
# 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::Preferences::OutOfOffice;
|
||||
|
||||
use parent 'Kernel::Output::HTML::Base';
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Kernel::Language qw(Translatable);
|
||||
|
||||
our $ObjectManagerDisabled = 1;
|
||||
|
||||
sub Param {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
# get layout object
|
||||
my $LayoutObject = $Kernel::OM->Get('Kernel::Output::HTML::Layout');
|
||||
|
||||
my @Params;
|
||||
if ( $Param{UserData}->{OutOfOffice} ) {
|
||||
$Param{OutOfOfficeOn} = 'checked="checked"';
|
||||
}
|
||||
else {
|
||||
$Param{OutOfOfficeOff} = 'checked="checked"';
|
||||
}
|
||||
$Param{OptionStart} = $LayoutObject->BuildDateSelection(
|
||||
Format => 'DateInputFormat',
|
||||
Area => 'no',
|
||||
Prefix => 'OutOfOfficeStart',
|
||||
OutOfOfficeStartYear => $Param{UserData}->{OutOfOfficeStartYear},
|
||||
OutOfOfficeStartMonth => $Param{UserData}->{OutOfOfficeStartMonth},
|
||||
OutOfOfficeStartDay => $Param{UserData}->{OutOfOfficeStartDay},
|
||||
OutOfOfficeStartHour => 0,
|
||||
OutOfOfficeStartMinute => 0,
|
||||
YearPeriodPast => 1,
|
||||
YearPeriodFuture => 5,
|
||||
Validate => 1,
|
||||
|
||||
# Do not convert to local time zone, show stored date as-is
|
||||
# (please see bug#12471 for more information).
|
||||
OverrideTimeZone => 1,
|
||||
);
|
||||
$Param{OptionEnd} = $LayoutObject->BuildDateSelection(
|
||||
Format => 'DateInputFormat',
|
||||
Area => 'no',
|
||||
DiffTime => 60 * 60 * 24 * 1,
|
||||
Prefix => 'OutOfOfficeEnd',
|
||||
OutOfOfficeEndYear => $Param{UserData}->{OutOfOfficeEndYear},
|
||||
OutOfOfficeEndMonth => $Param{UserData}->{OutOfOfficeEndMonth},
|
||||
OutOfOfficeEndDay => $Param{UserData}->{OutOfOfficeEndDay},
|
||||
OutOfOfficeEndHour => 0,
|
||||
OutOfOfficeEndMinute => 0,
|
||||
YearPeriodPast => 1,
|
||||
YearPeriodFuture => 5,
|
||||
Validate => 1,
|
||||
|
||||
# Do not convert to local time zone, show stored date as-is
|
||||
# (please see bug#12471 for more information).
|
||||
OverrideTimeZone => 1,
|
||||
);
|
||||
|
||||
push(
|
||||
@Params,
|
||||
{
|
||||
%Param,
|
||||
Block => 'OutOfOffice',
|
||||
},
|
||||
);
|
||||
return @Params;
|
||||
}
|
||||
|
||||
sub Run {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
# get needed objects
|
||||
my $UserObject = $Kernel::OM->Get('Kernel::System::User');
|
||||
my $SessionObject = $Kernel::OM->Get('Kernel::System::AuthSession');
|
||||
my $ParamObject = $Kernel::OM->Get('Kernel::System::Web::Request');
|
||||
my $LanguageObject = $Kernel::OM->Get('Kernel::Language');
|
||||
|
||||
for my $Key (
|
||||
qw(OutOfOffice OutOfOfficeStartYear OutOfOfficeStartMonth OutOfOfficeStartDay OutOfOfficeEndYear OutOfOfficeEndMonth OutOfOfficeEndDay)
|
||||
)
|
||||
{
|
||||
$Param{$Key} = $ParamObject->GetParam( Param => $Key ) || '';
|
||||
}
|
||||
|
||||
my $OOOStartDTObject = $Self->_GetOutOfOfficeDateTimeObject(
|
||||
Type => 'Start',
|
||||
Data => \%Param
|
||||
);
|
||||
my $OOOEndDTObject = $Self->_GetOutOfOfficeDateTimeObject(
|
||||
Type => 'End',
|
||||
Data => \%Param
|
||||
);
|
||||
|
||||
if ( !$OOOStartDTObject || !$OOOEndDTObject ) {
|
||||
return 1;
|
||||
}
|
||||
elsif ( $OOOStartDTObject <= $OOOEndDTObject ) {
|
||||
my $SessionID = $Kernel::OM->Get('Kernel::Output::HTML::Layout')->{SessionID};
|
||||
for my $Key (
|
||||
qw(OutOfOffice OutOfOfficeStartYear OutOfOfficeStartMonth OutOfOfficeStartDay OutOfOfficeEndYear OutOfOfficeEndMonth OutOfOfficeEndDay)
|
||||
)
|
||||
{
|
||||
if ( defined $Param{$Key} ) {
|
||||
|
||||
# pref update db
|
||||
if ( !$Kernel::OM->Get('Kernel::Config')->Get('DemoSystem') ) {
|
||||
$UserObject->SetPreferences(
|
||||
UserID => $Param{UserData}->{UserID},
|
||||
Key => $Key,
|
||||
Value => $Param{$Key},
|
||||
);
|
||||
}
|
||||
|
||||
# update SessionID
|
||||
if ( $Param{UserData}->{UserID} eq $Self->{UserID} ) {
|
||||
$SessionObject->UpdateSessionID(
|
||||
SessionID => $SessionID,
|
||||
Key => $Key,
|
||||
Value => $Param{$Key},
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# also update the lastname to remove out of office message
|
||||
if ( $Param{UserData}->{UserID} eq $Self->{UserID} ) {
|
||||
my %User = $UserObject->GetUserData( UserID => $Self->{UserID} );
|
||||
|
||||
$SessionObject->UpdateSessionID(
|
||||
SessionID => $SessionID,
|
||||
Key => 'UserLastname',
|
||||
Value => $User{UserLastname},
|
||||
);
|
||||
}
|
||||
|
||||
$Self->{Message} = Translatable('Preferences updated successfully!');
|
||||
}
|
||||
else {
|
||||
$Self->{Error} = $LanguageObject->Translate('Please specify an end date that is after the start date.');
|
||||
return;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub Error {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
return $Self->{Error} || '';
|
||||
}
|
||||
|
||||
sub Message {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
return $Self->{Message} || '';
|
||||
}
|
||||
|
||||
sub _GetOutOfOfficeDateTimeObject {
|
||||
my ( $Self, %Param ) = @_;
|
||||
|
||||
my $Type = $Param{Type};
|
||||
my $Data = $Param{Data};
|
||||
|
||||
my $Year = $Data->{"OutOfOffice${Type}Year"};
|
||||
my $Month = $Data->{"OutOfOffice${Type}Month"};
|
||||
my $Day = $Data->{"OutOfOffice${Type}Day"};
|
||||
|
||||
if ( $Year && $Month && $Day ) {
|
||||
my $DTString = sprintf(
|
||||
'%s-%s-%s %s',
|
||||
$Year,
|
||||
$Month,
|
||||
$Day,
|
||||
( $Type eq 'End' ? '23:59:59' : '00:00:00' ),
|
||||
);
|
||||
|
||||
return $Kernel::OM->Create(
|
||||
'Kernel::System::DateTime',
|
||||
ObjectParams => {
|
||||
String => $DTString,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
1;
|
||||
Reference in New Issue
Block a user