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

56 lines
1.5 KiB
PHP

<?php
class WPML_TM_Translation_Jobs_Fix_Summary {
const INVALID_JOBS_SYNCED_KEY = 'wpml_tm_migration_invalid_jobs_already_synced';
/** @var WPML_TM_Translation_Jobs_Fix_Summary_Notice */
private $notice;
/** @var WPML_TM_Jobs_Migration_State */
private $migration_state;
public function __construct(
WPML_TM_Translation_Jobs_Fix_Summary_Notice $notice,
WPML_TM_Jobs_Migration_State $migration_state
) {
$this->notice = $notice;
$this->migration_state = $migration_state;
}
public function add_hooks() {
add_action( 'init', array( $this, 'display_summary' ) );
add_action(
'wp_ajax_' . WPML_TP_Sync_Ajax_Handler::AJAX_ACTION,
array(
$this,
'mark_invalid_jobs_as_synced',
)
);
}
public function display_summary() {
if ( $this->should_display_summary_notice() ) {
$this->notice->add_notice();
} elseif ( $this->notice->exists() ) {
$this->notice->remove_notice();
}
}
private function should_display_summary_notice() {
if ( ! $this->migration_state->is_fixing_migration_done() ) {
return false;
}
$jobs_with_new_status = get_option( WPML_Translation_Jobs_Migration::MIGRATION_FIX_LOG_KEY );
$jobs_with_new_status = isset( $jobs_with_new_status['status_changed'] ) ? $jobs_with_new_status['status_changed'] : null;
$jobs_already_synced = (int) get_option( self::INVALID_JOBS_SYNCED_KEY ) > 1;
return $jobs_with_new_status && ! $jobs_already_synced;
}
public function mark_invalid_jobs_as_synced() {
update_option( self::INVALID_JOBS_SYNCED_KEY, 2 );
}
}