100 lines
3.7 KiB
Perl
Executable File
100 lines
3.7 KiB
Perl
Executable File
#!/usr/bin/perl -w
|
|
#----------------------------------------------------------------------
|
|
# copyright (C) 2010 Nethesis srl
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
#----------------------------------------------------------------------
|
|
|
|
use strict;
|
|
use DBI;
|
|
use esmith::ConfigDB;
|
|
use esmith::util;
|
|
|
|
# Exit early if there is nothing to do
|
|
die("sogo db must exist") unless ( -d "/var/lib/mysql/sogo/");
|
|
die("sogo db must exist") unless ( -f "/var/lib/mysql/sogo/sogo_folder_info.frm");
|
|
|
|
# This is a translation of the script 'sql-update-1.2.2_to_1.3.0-mysql.sh'
|
|
# that is safe to run multiple times, and which can be run on a 1.2.2
|
|
# installation without barfing.
|
|
|
|
my $conf = esmith::ConfigDB->open_ro
|
|
or die "Can't open configuration database: $!\n";
|
|
|
|
our $username = 'sogo';
|
|
our $password = $conf->get_prop("sogod", "DbPassword") || '';
|
|
our $database = 'sogo';
|
|
our $dbi_options = { PrintError => 0, ChopBlanks => 1, AutoCommit => 1 };
|
|
|
|
my $db_handle = DBI->connect("DBI:mysql:$database",
|
|
$username, $password, $dbi_options) ||
|
|
die ("Connection error: $DBI::errstr");
|
|
|
|
my $folders_sth = $db_handle->prepare(qq{
|
|
SELECT SUBSTRING_INDEX(c_quick_location, '/', -1)
|
|
FROM sogo_folder_info WHERE c_folder_type = 'Appointment';
|
|
}) || die ("Unable to prepare query: $DBI::errstr");
|
|
|
|
$folders_sth->execute() || die ("Unable to execute query: $DBI::errstr");
|
|
|
|
while (my @folders_row = $folders_sth->fetchrow_array()) {
|
|
$db_handle->do(qq{
|
|
ALTER TABLE $folders_row[0] ADD COLUMN c_category VARCHAR(255);
|
|
});
|
|
}
|
|
|
|
# This is a translation of the script 'sql-update-1.3.3_to_1.3.4-mysql.sh'
|
|
# that is safe to run multiple times, and which can be run on a 1.2.2 or 1.3.2
|
|
# installation without barfing.
|
|
|
|
my $contacts_sth = $db_handle->prepare(qq{
|
|
SELECT SUBSTRING_INDEX(c_quick_location, '/', -1)
|
|
FROM sogo_folder_info where c_folder_type = 'Contact';
|
|
}) || die ("Unable to prepare query: $DBI::errstr");
|
|
|
|
$contacts_sth->execute() || die ("Unable to execute query: $DBI::errstr");
|
|
|
|
while (my @contacts_row = $contacts_sth->fetchrow_array()) {
|
|
$db_handle->do(qq{
|
|
ALTER TABLE $contacts_row[0] ADD COLUMN c_categories VARCHAR(255);
|
|
});
|
|
}
|
|
|
|
# This is a translation of the script sql-update-1.3.11_to_1.3.12-mysql.sh
|
|
# that is safe to run multiple times, and which can be run on a 1.2.2 or 1.3.9
|
|
# installation without barfing.
|
|
$db_handle->do(qq{
|
|
ALTER TABLE sogo_sessions_folder ADD PRIMARY KEY (c_id);
|
|
});
|
|
|
|
# This is a translation of the script sql-update-1.3.16_to_1.3.17-mysql.sh
|
|
# This script only works with mysql
|
|
# updates c_cycleinfo to mediumtext
|
|
#
|
|
|
|
my $tables_sth = $db_handle->prepare(qq{
|
|
SELECT SUBSTRING_INDEX(c_quick_location, '/', -1)
|
|
FROM sogo_folder_info where c_path3 = 'Calendar';
|
|
}) || die ("Unable to prepare query: $DBI::errstr");
|
|
|
|
$tables_sth->execute() || die ("Unable to execute query: $DBI::errstr");
|
|
|
|
while (my @table_row = $tables_sth->fetchrow_array()) {
|
|
$db_handle->do(qq{
|
|
ALTER TABLE $table_row[0] MODIFY c_cycleinfo mediumtext;
|
|
});
|
|
}
|
|
|