196 lines
8.0 KiB
PHP
196 lines
8.0 KiB
PHP
<?php
|
|
/*********************************************************************************
|
|
*
|
|
* TimeTrex is a Workforce Management program developed by
|
|
* TimeTrex Software Inc. Copyright (C) 2003 - 2021 TimeTrex Software Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it under
|
|
* the terms of the GNU Affero General Public License version 3 as published by
|
|
* the Free Software Foundation with the addition of the following permission
|
|
* added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED
|
|
* WORK IN WHICH THE COPYRIGHT IS OWNED BY TIMETREX, TIMETREX DISCLAIMS THE
|
|
* WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
|
|
*
|
|
* 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 Affero General Public License for more
|
|
* details.
|
|
*
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License along
|
|
* with this program; if not, see http://www.gnu.org/licenses or write to the Free
|
|
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
* 02110-1301 USA.
|
|
*
|
|
*
|
|
* You can contact TimeTrex headquarters at Unit 22 - 2475 Dobbin Rd. Suite
|
|
* #292 West Kelowna, BC V4T 2E9, Canada or at email address info@timetrex.com.
|
|
*
|
|
*
|
|
* The interactive user interfaces in modified source and object code versions
|
|
* of this program must display Appropriate Legal Notices, as required under
|
|
* Section 5 of the GNU Affero General Public License version 3.
|
|
*
|
|
*
|
|
* In accordance with Section 7(b) of the GNU Affero General Public License
|
|
* version 3, these Appropriate Legal Notices must retain the display of the
|
|
* "Powered by TimeTrex" logo. If the display of the logo is not reasonably
|
|
* feasible for technical reasons, the Appropriate Legal Notices must display
|
|
* the words "Powered by TimeTrex".
|
|
*
|
|
********************************************************************************/
|
|
|
|
|
|
/**
|
|
* @package Modules\Install
|
|
*/
|
|
class InstallSchema_1113A extends InstallSchema_Base {
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
function preInstall() {
|
|
Debug::text( 'preInstall: ' . $this->getVersion(), __FILE__, __LINE__, __METHOD__, 9 );
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
function postInstall() {
|
|
Debug::text( 'postInstall: ' . $this->getVersion(), __FILE__, __LINE__, __METHOD__, 9 );
|
|
|
|
$upf = TTNew( 'UserPreferenceFactory' );
|
|
$deprecated_zones = $upf->getOptions( 'deprecated_timezone' );
|
|
|
|
global $config_vars;
|
|
if ( isset( $deprecated_zones[trim( $config_vars['other']['system_timezone'] )] ) ) {
|
|
$new_time_zone = $deprecated_zones[trim( $config_vars['other']['system_timezone'] )];
|
|
Debug::text( 'System TimeZone is deprecated: ' . $config_vars['other']['system_timezone'] . ' switching to: ' . $new_time_zone, __FILE__, __LINE__, __METHOD__, 9 );
|
|
$tmp_config_vars['other']['system_timezone'] = $new_time_zone; //Extra quotes not needed.
|
|
|
|
$install_obj = new Install();
|
|
$install_obj->writeConfigFile( $tmp_config_vars );
|
|
unset( $install_obj, $new_time_zone );
|
|
} else {
|
|
Debug::text( 'System TimeZone is valid.', __FILE__, __LINE__, __METHOD__, 9 );
|
|
}
|
|
|
|
//Go through each users preferences and convert deprecated timezones to their proper ones.
|
|
$clf = TTnew( 'CompanyListFactory' ); /** @var CompanyListFactory $clf */
|
|
$clf->getAll();
|
|
if ( $clf->getRecordCount() > 0 ) {
|
|
foreach ( $clf as $c_obj ) {
|
|
Debug::text( 'Company: ' . $c_obj->getName(), __FILE__, __LINE__, __METHOD__, 9 );
|
|
|
|
//Make sure all companies, cancelled or not get changed.
|
|
$deprecated_zones = $upf->getOptions( 'deprecated_timezone', [ 'country' => $c_obj->getCountry() ] );
|
|
|
|
|
|
$udlf = TTNew( 'UserDefaultListFactory' );
|
|
$udlf->getByCompanyId( $c_obj->getId(), null, null, [ 'id' => 'asc' ] ); //Need to override order, as the default "display_order" column is not created until schema version 1123A.
|
|
if ( $udlf->getRecordCount() > 0 ) {
|
|
foreach ( $udlf as $ud_obj ) {
|
|
$record_updated = false;
|
|
|
|
if ( $ud_obj->getLanguage() == 'pt' || $ud_obj->getLanguage() == 'zh' || $ud_obj->getLanguage() == 'it' || $ud_obj->getLanguage() == 'da' ) {
|
|
Debug::text( ' Found deprecated Language: ' . $ud_obj->getLanguage() . ' switching to: en', __FILE__, __LINE__, __METHOD__, 9 );
|
|
$ud_obj->setLanguage( 'en' );
|
|
$record_updated = true;
|
|
}
|
|
|
|
if ( isset( $deprecated_zones[trim( $ud_obj->getTimeZone() )] ) ) {
|
|
$new_time_zone = $deprecated_zones[trim( $ud_obj->getTimeZone() )];
|
|
Debug::text( ' Found deprecated TimeZone: ' . $ud_obj->getTimeZone() . ' switching to: ' . $new_time_zone . ' for User Default ID: ' . $ud_obj->getId(), __FILE__, __LINE__, __METHOD__, 9 );
|
|
$ud_obj->setTimeZone( $new_time_zone );
|
|
$record_updated = true;
|
|
unset( $new_time_zone );
|
|
}
|
|
//else {
|
|
// Debug::text( 'NOT deprecated TimeZone: ' . $ud_obj->getTimeZone() .' for User Preference ID: ' . $ud_obj->getId() . ' User ID: ' . $ud_obj->getUser(), __FILE__, __LINE__, __METHOD__, 9 );
|
|
//}
|
|
|
|
if ( $record_updated == true ) {
|
|
if ( $ud_obj->isValid() ) {
|
|
$ud_obj->Save();
|
|
} else {
|
|
Debug::text( ' WARNING: Unable to save user default preference!', __FILE__, __LINE__, __METHOD__, 9 );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
unset( $udlf, $ud_obj );
|
|
|
|
|
|
$uplf = TTNew( 'UserPreferenceListFactory' );
|
|
$uplf->getByCompanyId( $c_obj->getId() );
|
|
if ( $uplf->getRecordCount() > 0 ) {
|
|
foreach ( $uplf as $up_obj ) {
|
|
$record_updated = false;
|
|
|
|
if ( $up_obj->getLanguage() == 'pt' || $up_obj->getLanguage() == 'zh' || $up_obj->getLanguage() == 'it' || $up_obj->getLanguage() == 'da' ) {
|
|
Debug::text( ' Found deprecated Language: ' . $up_obj->getLanguage() . ' switching to: en', __FILE__, __LINE__, __METHOD__, 9 );
|
|
$up_obj->setLanguage( 'en' );
|
|
$record_updated = true;
|
|
}
|
|
|
|
if ( isset( $deprecated_zones[trim( $up_obj->getTimeZone() )] ) ) {
|
|
$new_time_zone = $deprecated_zones[trim( $up_obj->getTimeZone() )];
|
|
Debug::text( ' Found deprecated TimeZone: ' . $up_obj->getTimeZone() . ' switching to: ' . $new_time_zone . ' for User Preference ID: ' . $up_obj->getId() . ' User ID: ' . $up_obj->getUser(), __FILE__, __LINE__, __METHOD__, 9 );
|
|
$up_obj->setTimeZone( $new_time_zone );
|
|
$record_updated = true;
|
|
unset( $new_time_zone );
|
|
}
|
|
//else {
|
|
// Debug::text( 'NOT deprecated TimeZone: ' . $up_obj->getTimeZone() .' for User Preference ID: ' . $up_obj->getId() . ' User ID: ' . $up_obj->getUser(), __FILE__, __LINE__, __METHOD__, 9 );
|
|
//}
|
|
|
|
if ( $record_updated == true ) {
|
|
if ( $up_obj->isValid() ) {
|
|
$up_obj->Save();
|
|
} else {
|
|
Debug::text( ' WARNING: Unable to save user preference!', __FILE__, __LINE__, __METHOD__, 9 );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
unset( $uplf, $up_obj );
|
|
|
|
|
|
$slf = TTNew( 'StationListFactory' );
|
|
$slf->getByCompanyId( $c_obj->getId() );
|
|
if ( $slf->getRecordCount() > 0 ) {
|
|
foreach ( $slf as $s_obj ) {
|
|
$record_updated = false;
|
|
|
|
if ( isset( $deprecated_zones[trim( $s_obj->getTimeZone() )] ) ) {
|
|
$new_time_zone = $deprecated_zones[trim( $s_obj->getTimeZone() )];
|
|
Debug::text( ' Found deprecated TimeZone: ' . $s_obj->getTimeZone() . ' switching to: ' . $new_time_zone . ' for Station ID: ' . $s_obj->getId() .' Type: '. $s_obj->getType(), __FILE__, __LINE__, __METHOD__, 9 );
|
|
$s_obj->setTimeZone( $new_time_zone );
|
|
$record_updated = true;
|
|
unset( $new_time_zone );
|
|
}
|
|
//else {
|
|
// Debug::text( 'NOT deprecated TimeZone: ' . $s_obj->getTimeZone() .' for User Preference ID: ' . $s_obj->getId() . ' User ID: ' . $s_obj->getUser(), __FILE__, __LINE__, __METHOD__, 9 );
|
|
//}
|
|
|
|
if ( $record_updated == true ) {
|
|
if ( $s_obj->isValid() ) {
|
|
$s_obj->Save();
|
|
} else {
|
|
Debug::text( ' WARNING: Unable to save station!', __FILE__, __LINE__, __METHOD__, 9 );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
unset( $slf, $s_obj );
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
?>
|