/usr/share/otrs/scripts/DBUpdateTo6/UpgradeDatabaseStructure.pm is in otrs2 6.0.5-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 | # --
# Copyright (C) 2001-2018 OTRS AG, http://otrs.com/
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (AGPL). If you
# did not receive this file, see http://www.gnu.org/licenses/agpl.txt.
# --
package scripts::DBUpdateTo6::UpgradeDatabaseStructure; ## no critic
use strict;
use warnings;
use parent qw(scripts::DBUpdateTo6::Base);
our @ObjectDependencies = (
'Kernel::Config',
'Kernel::System::DB',
'Kernel::System::Log',
'Kernel::System::Main',
'Kernel::System::Console::Command::Maint::Database::Check',
);
=head1 NAME
scripts::DBUpdateTo6::UpgradeDatabaseStructure - Upgrades the database structure to OTRS 6.
=cut
sub Run {
my ( $Self, %Param ) = @_;
# enable auto-flushing of STDOUT
$| = 1; ## no critic
my $Verbose = $Param{CommandlineOptions}->{Verbose} || 0;
my @Tasks = (
{
Message =>
'Add table for dynamic field object names and add an index to speed up searching dynamic field text values',
Module => 'DynamicFieldChanges',
},
{
Message => 'Add new sysconfig tables',
Module => 'NewSysconfigTables',
},
{
Message => 'Remove no longer needed MD5 columns from some tables',
Module => 'RemoveMD5Columns',
},
{
Message => 'Add new communication channel table and insert data',
Module => 'NewCommunicationChannelTable',
},
{
Message => 'Change article table structure and prepare renaming of article tables',
Module => 'ArticleTableChangesPreRename',
},
{
Message => 'Rename article tables',
Module => 'ArticleTableChangesRename',
},
{
Message => 'Create new article table and change some table structures after renaming of article tables',
Module => 'ArticleTableChangesPostRename',
},
{
Message => 'Add an index to the ticket_history table and add EmailResend ticket history type',
Module => 'TicketHistoryTableChanges',
},
{
Message => 'Add new tables for customer relations',
Module => 'NewCustomerRelationTables',
},
{
Message => 'Add new table for chat data',
Module => 'NewChatDataTable',
},
{
Message => 'Change the password columns in the user/customer user tables',
Module => 'PasswordColumnChanges',
},
{
Message => 'Add new table for article search index',
Module => 'NewArticleSearchIndexTable',
},
{
Message => 'Add new tables for communication logs',
Module => 'CommunicationLogs',
},
{
Message => 'Update notification tables',
Module => 'UpdateNotificationTables',
},
{
Message => 'Drop obsolete create_time_unix column from ticket table',
Module => 'TicketDropCreateTimeUnix',
},
{
Message => 'Replace column create_time_unix column by create_time column in ticket_index table',
Module => 'TicketIndexUpdate',
},
);
print "\n" if $Verbose;
TASK:
for my $Task (@Tasks) {
next TASK if !$Task;
next TASK if !$Task->{Module};
print " - $Task->{Message}\n" if $Verbose;
my $ModuleName = "scripts::DBUpdateTo6::UpgradeDatabaseStructure::$Task->{Module}";
if ( !$Kernel::OM->Get('Kernel::System::Main')->Require($ModuleName) ) {
next TASK;
}
# Run module.
$Kernel::OM->ObjectParamAdd(
"scripts::DBUpdateTo6::UpgradeDatabaseStructure::$Task->{Module}" => {
Opts => $Param{CommandlineOptions},
},
);
my $Object = $Kernel::OM->Create($ModuleName);
if ( !$Object ) {
print "\n Error: System was unable to create object for: $ModuleName.\n\n";
return;
}
my $Success = $Object->Run(%Param);
if ( !$Success ) {
print " Error.\n" if $Verbose;
return;
}
}
print "\n" if $Verbose;
return 1;
}
=head2 CheckPreviousRequirement()
Check for initial conditions for running this migration step.
Returns 1 on success:
my $Result = $DBUpdateTo6Object->CheckPreviousRequirement();
=cut
sub CheckPreviousRequirement {
my ( $Self, %Param ) = @_;
my $Verbose = $Param{CommandlineOptions}->{Verbose} || 0;
print "\n" if $Verbose;
# Localize standard output and redirect it to a variable in order to decide whether should it be shown later.
my $StandardOutput;
my $ConnectionCheck;
{
local *STDOUT = *STDOUT;
undef *STDOUT;
open STDOUT, '>:utf8', \$StandardOutput; ## no critic
# Check if DB connection is possible.
$ConnectionCheck = $Kernel::OM->Get('Kernel::System::Console::Command::Maint::Database::Check')->Execute();
}
print $StandardOutput if $Verbose;
print "\n" if $Verbose;
if ( !defined $ConnectionCheck || $ConnectionCheck ne 0 ) {
print "\n Error: Not possible to perform DB connection!\n\n";
return;
}
return 1;
}
1;
=head1 TERMS AND CONDITIONS
This software is part of the OTRS project (L<http://otrs.org/>).
This software comes with ABSOLUTELY NO WARRANTY. For details, see
the enclosed file COPYING for license information (AGPL). If you
did not receive this file, see L<http://www.gnu.org/licenses/agpl.txt>.
=cut
|