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

74 lines
2.5 KiB
PHP

<?php
class WPML_TM_Troubleshooting_Fix_Translation_Jobs_TP_ID {
const AJAX_ACTION = 'wpml-fix-translation-jobs-tp-id';
private $jobs_migration;
private $jobs_repository;
public function __construct( WPML_Translation_Jobs_Migration $jobs_migration, WPML_TM_Jobs_Repository $jobs_repository ) {
$this->jobs_migration = $jobs_migration;
$this->jobs_repository = $jobs_repository;
}
public function add_hooks() {
add_action(
'wpml_troubleshooting_after_fix_element_type_collation',
array(
$this,
'render_troubleshooting_section',
)
);
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
add_action( 'wp_ajax_' . self::AJAX_ACTION, array( $this, 'fix_tp_id_ajax' ) );
}
public function fix_tp_id_ajax() {
if ( isset( $_POST['nonce'] ) && wp_verify_nonce( $_POST['nonce'], self::AJAX_ACTION ) ) {
$job_ids = isset( $_POST['job_ids'] ) ? array_map( 'intval', explode( ',', filter_var( $_POST['job_ids'], FILTER_SANITIZE_FULL_SPECIAL_CHARS ) ) ) : array();
$jobs = array();
foreach ( $job_ids as $job_id ) {
if ( ! $job_id ) {
continue;
}
$params = new WPML_TM_Jobs_Search_Params();
$params->set_scope( WPML_TM_Jobs_Search_Params::SCOPE_REMOTE );
$params->set_job_types( array( WPML_TM_Job_Entity::POST_TYPE, WPML_TM_Job_Entity::PACKAGE_TYPE ) );
$params->set_local_job_id( $job_id );
$jobs[] = current( $this->jobs_repository->get( $params )->getIterator()->getArrayCopy() );
}
if ( $jobs ) {
$this->jobs_migration->migrate_jobs( $jobs, true );
}
wp_send_json_success();
} else {
wp_send_json_error();
}
}
public function enqueue_scripts( $hook ) {
if ( WPML_PLUGIN_FOLDER . '/menu/troubleshooting.php' === $hook ) {
wp_enqueue_script( 'wpml-fix-tp-id', WPML_TM_URL . '/res/js/fix-tp-id.js', array( 'jquery' ), WPML_TM_VERSION );
}
}
public function render_troubleshooting_section() {
?>
<p>
<input id="wpml_fix_tp_id_text" type="text" value=""/><input id="wpml_fix_tp_id_btn" type="button" class="button-secondary" value="<?php esc_attr_e( 'Fix WPML Translation Jobs "tp_id" field', 'sitepress' ); ?>"/><br/>
<?php wp_nonce_field( self::AJAX_ACTION, 'wpml-fix-tp-id-nonce' ); ?>
<small style="margin-left:10px;"><?php esc_attr_e( 'Fixes the "tp_id" field of WPML ranslation jobs and set the status to "in progress" (it requires manual action to re-sync translation status + download translations). It accepts comma separated values of translation job IDs (rid).', 'sitepress' ); ?></small>
</p>
<?php
}
}