Files
doitinpoland.com/wp-content/plugins/sitepress-multilingual-cms/classes/notices/translation-jobs-migration/class-wpml-tm-jobs-migration-state.php
2023-09-12 21:41:04 +02:00

70 lines
2.1 KiB
PHP

<?php
class WPML_TM_Jobs_Migration_State {
const MIGRATION_DONE_KEY = 'wpml-tm-translation-jobs-migration';
const FIXING_MIGRATION_STATE_KEY = 'wpml-tm-all-translation-jobs-migration';
const MIGRATION_SKIPPED = 'wpml-tm-translation-jobs-migration-skipped';
/**
* The fixing migration has already been run but it contained errors
*/
const FIRST_MIGRATION_FIX_HAS_RUN = 1;
/**
* We've already cleaned logs of the first fixing migration and are ready to run another this time flawless version
*/
const READY_TO_RUN_SECOND_MIGRATION_FIX = 2;
/**
* The final flawless fixing migration has been run
*/
const SECOND_MIGRATION_FIX_HAS_RUN = 3;
/**
* Checks if the original migration has been finished
*
* @return bool
*/
public function is_migrated() {
return (bool) get_option( self::MIGRATION_DONE_KEY );
}
/**
* Checks if the fixing migration ( migration which fixes the flaws of the original migration ) has been run
*
* @return bool
*/
public function is_fixing_migration_done() {
$option = (int) get_option( self::FIXING_MIGRATION_STATE_KEY );
if ( $option === self::FIRST_MIGRATION_FIX_HAS_RUN ) { // clear previous log
update_option( WPML_Translation_Jobs_Migration::MIGRATION_FIX_LOG_KEY, array(), false );
update_option( self::FIXING_MIGRATION_STATE_KEY, self::READY_TO_RUN_SECOND_MIGRATION_FIX, true );
}
return (int) get_option( self::FIXING_MIGRATION_STATE_KEY ) === self::SECOND_MIGRATION_FIX_HAS_RUN;
}
public function mark_migration_as_done() {
update_option( self::MIGRATION_DONE_KEY, 1, true );
// a user has never run the original migration so it does not need the fixing migration
$this->mark_fixing_migration_as_done();
}
public function mark_fixing_migration_as_done() {
update_option( self::FIXING_MIGRATION_STATE_KEY, self::SECOND_MIGRATION_FIX_HAS_RUN, true );
}
/**
* @param bool $flag
*/
public function skip_migration( $flag = true ) {
update_option( self::MIGRATION_SKIPPED, $flag, true );
}
/**
* @return bool
*/
public function is_skipped() {
return (bool) get_option( self::MIGRATION_SKIPPED );
}
}